社区
C#
帖子详情
并行访问数据库同一记录
dvdhan
2012-06-25 10:30:21
1.当ABCD四个人同时访问数据库同一条记录时,假如A最早访问,如何做到A可以对该条记录进行所有操作,BCD只读,而不能进行任何其他操作?
2.有张“登陆登出日志”表,包括3个字段(用户,登陆时间,登出时间),在登陆系统时记录登陆时间,登出时记录等登出时间,假如异常退出,比如死机、断电等,这时该如何处理?
3.当一条记录Update时,如何将该条记录所有被修改的字段保存到一张表‘记录日志’(没修改的不用)?
...全文
173
10
打赏
收藏
并行访问数据库同一记录
1.当ABCD四个人同时访问数据库同一条记录时,假如A最早访问,如何做到A可以对该条记录进行所有操作,BCD只读,而不能进行任何其他操作? 2.有张“登陆登出日志”表,包括3个字段(用户,登陆时间,登出时间),在登陆系统时记录登陆时间,登出时记录等登出时间,假如异常退出,比如死机、断电等,这时该如何处理? 3.当一条记录Update时,如何将该条记录所有被修改的字段保存到一张表‘记录日志’(没修改的不用)?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dvdhan
2012-06-29
打赏
举报
回复
如何在程序中调用水晶报表
wanghui0380
2012-06-26
打赏
举报
回复
5楼已经回答的很完整了
我在补充一下第3个问题
对于第3个问题,一般有2种方式完成
第一种数据库方式:数据库做update触发,然后更新日志(其实sql的日志本身也有这功能,假设你很清楚sql日志的格式,完全也可以直接分析sql日志)
第二种方式,由自己的代码完成。自己的对象实现INotifyProptyChanged,IEditableObject 两个事件。由这两个接口共同完整,属性修改判定(IEditableObject会把原始值保存,INotifyProptyChanged则可以在修改属性值的时候和原始值比较一下,如果的确是修改了则向上触发通知)这样你就可以在EndEidt的时候,获取到整个对象都修改了那些属性值的消息,然后保存下来
烈火蜓蜻
2012-06-25
打赏
举报
回复
[Quote=引用楼主 的回复:]
1.当ABCD四个人同时访问数据库同一条记录时,假如A最早访问,如何做到A可以对该条记录进行所有操作,BCD只读,而不能进行任何其他操作?
2.有张“登陆登出日志”表,包括3个字段(用户,登陆时间,登出时间),在登陆系统时记录登陆时间,登出时记录等登出时间,假如异常退出,比如死机、断电等,这时该如何处理?
3.当一条记录Update时,如何将该条记录所有被修改的字段保存到一张表‘记录日志’(没……
[/Quote]
这个是数据库应该考虑的问题,而不你来考虑的,
1. 可以参考一下,数据库的隔离级别,不过默认的数据库隔离级别就是这样的,因此你不需要做任何的处理就可以实现,也不用加什么事务
2. 不明白你说什么,客户没登出就死机,还是服务器死机,客户端死机的话,可以在服务端这样处理,登陆时就写登陆日志,退出之后再写登出时间,如果客户机死机,可以设定一个超时时间,超时时间过了之后,把没有动作的客户机全部登出,并记录该客户机登出时间,如果是服务端死机,那就不管了,有什么好弄的。
3. Update数据的同时,再写一下日志表。
undead4444
2012-06-25
打赏
举报
回复
断开连接的话可以参考这个文章,独占查询模拟,用update当select,后面的会话根据是否有tag标记来判断是否可以update
http://blog.csdn.net/jinjazz/article/details/4520802
undead4444
2012-06-25
打赏
举报
回复
1,SELECT * FROM table WITH (HOLDLOCK) 会话A持有共享锁,BCD可以select不能update,当A释放后BCD才可以update。
2,心跳机制,定时获取客户端状态,关键部分用。
3,用触发器。
dvdhan
2012-06-25
打赏
举报
回复
1.DataSet数据集,断开连接的操作,事务是肯定不行了。
2.假如我进行了一个操作,但定时器时间没到,异常退出,则无法更新。
3.注:是把每个修改了的字段保存到bak表,而非整条记录。
WM_JAWIN
2012-06-25
打赏
举报
回复
1,启用事务
2,采用定时更新退出时间
3,建一个结构一样的bak表,但要比原表多一个ID,更新之前,把数据复制过去就行了 可以考虑触发器
叶帅
2012-06-25
打赏
举报
回复
1、启动事务。
2、在需要更新的那张表加一个排它锁的字段。思路大概就是这样子。
guoyanqi1983
2012-06-25
打赏
举报
回复
SQL中经常被人忽略的:锁!排他锁可以解决楼主所讲的问题1
事务是确保数据的原子性和一致性
dvdhan
2012-06-25
打赏
举报
回复
Linux7985
undead4444
你们貌似说的对 再看看 如果别人说的没你们的合理就给你们
【Java并发处理代码规范】之并发修改
同一
记录
时的加锁策略
该规范指出在Java编程中,并发修改
同一
记录
时,需要加锁来避免更新丢失。可以在应用层加锁、缓存层加锁,或者在
数据库
层使用乐观锁,使用version作为更新依据。
java mysql 并发更新数据_Java中如何实现j并发更新
数据库
同一
条数据
分情况来说:普通单应用并发、多应用或多台...具体处理方案包含以下几种:1)
数据库
行级索,优点:简单粗暴;缺点:容易死锁&性能差,非
数据库
专业人士不建议使用。2)写入请求分离到一个独立应用项目中,这个实...
数据库
-并发
访问
带来的问题
为了提高使用效率,
数据库
基本上都是多用户的,即允许多个用户并发地
访问
数据库
中的数据,如飞机订票
数据库
系统、银行储蓄
数据库
系统等。在这样的系统中,
同一
时刻
并行
运行的事务可多达数百个。如果对这种并发
访问
不...
数据库
并行
mysql_
并行
数据库
并行
数据库
计算机系统性能价比的不断提高迫切要求硬件、软件结构的改进。硬件方面,单纯依靠提高微处理器速度和缩小体积来提高性能价比的方法正趋于物理极限;磁盘技术的发展滞后于微处理器的发展速度,使得磁盘 I/...
【
数据库
】
数据库
并发操作(一)
数据库
并发操作带来的问题
多个用户
访问
同一
个
数据库
时,如果他们的事务同时使用相同的数据,则可能会导致并发问题的产生; 并发操作带来的
数据库
不一致性可以分为四类:(1)丢失或覆盖更新当两个或多个事务选择
同一
数据,并且基于最初选定...
C#
110,526
社区成员
642,571
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章