多用户同时操作同一张页面

u010072032 2013-09-05 11:18:46
在网上找过一些资料。比如:如何进行行锁定,如何捕获因“脏读”,“丢失更新”,“非重复读”等并发问题而产生的异常等.

但。这张页面设计到了N多张表,并且都有添加删除修改过的功能,要是进行行锁定的话,那不就要设计到N多行啊。

求,有没有简单一点的方法啊。就是多用户同时点保存的时候,去执行一条数据保存,其他用户弹出提示框。

现在只有这么多分求高手解答啊。
...全文
303 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Andy__Huang 2013-09-05
  • 打赏
  • 举报
回复
无论什么样都有先后顺序,sql server2008用事务处理就可以了,如果同时保存,用事务处理,它也会等另一个事务解锁后它才能执行
threenewbee 2013-09-05
  • 打赏
  • 举报
回复
从用户体验的角度来说,页面通过长连接ajax无刷新地获得别人的修改比较好。 无论你是上锁还是做事务。只是保证程序数据上的同步,但是用户很沮丧地输入了半天,然后被告知,你的数据不被接受。这是没办法靠上锁解决的。
wg5945 2013-09-05
  • 打赏
  • 举报
回复
引用 4 楼 u010072032 的回复:
[quote=引用 3 楼 wg5945 的回复:] 可以给数据加一个updatetime,更新的时候先取出该数据的updatetime,保存时判断updatetime和之前取出的updatetime是否一致,因为如果别人在你之前保存的话会将updatetime改为他保存时的时间
要是两用户同时保存,时间是一样的不就没效果了啊。[/quote] 时间精度高点不就行了~~
u010072032 2013-09-05
  • 打赏
  • 举报
回复
引用 3 楼 wg5945 的回复:
可以给数据加一个updatetime,更新的时候先取出该数据的updatetime,保存时判断updatetime和之前取出的updatetime是否一致,因为如果别人在你之前保存的话会将updatetime改为他保存时的时间
要是两用户同时保存,时间是一样的不就没效果了啊。
wg5945 2013-09-05
  • 打赏
  • 举报
回复
可以给数据加一个updatetime,更新的时候先取出该数据的updatetime,保存时判断updatetime和之前取出的updatetime是否一致,因为如果别人在你之前保存的话会将updatetime改为他保存时的时间
手抓宝 2013-09-05
  • 打赏
  • 举报
回复
手抓宝 2013-09-05
  • 打赏
  • 举报
回复
跟页面没关系,数据库自带排它锁。在直行数据存储时,把多张关联表的插入更新等操作都放在一个事务中执行。
threenewbee 2013-09-05
  • 打赏
  • 举报
回复
总之,你上锁是在提交这个过程中,而不是在用户编辑的整个阶段。
u010072032 2013-09-05
  • 打赏
  • 举报
回复
引用 6 楼 caozhy 的回复:
从用户体验的角度来说,页面通过长连接ajax无刷新地获得别人的修改比较好。 无论你是上锁还是做事务。只是保证程序数据上的同步,但是用户很沮丧地输入了半天,然后被告知,你的数据不被接受。这是没办法靠上锁解决的。
事务处理是不是这样:

commit tran

update tbl_lecense_number set product_id=@product_id,productInfo_id=@productInfo_id,number=@number_1967 , number_name=@number_name_1967, number_note=@number_note_1967, deadline=@licenseDeadline_1967, date=@date_1967, readyImg=@ready_1967, designTeam=@designTeam_1967, dropDown=@dropDown_1967,cat=@cat_1967,productMilestones_id=@productMilestones_id_1967 where serial=@licenseId_1967;
update tbl_lecense_number set product_id=@product_id,productInfo_id=@productInfo_id,number=@number_2159 , number_name=@number_name_2159, number_note=@number_note_2159, deadline=@licenseDeadline_2159, date=@date_2159, readyImg=@ready_2159, designTeam=@designTeam_2159, dropDown=@dropDown_2159,cat=@cat_2159,productMilestones_id=@productMilestones_id_2159 where serial=@licenseId_2159;
update tbl_lecense_number set product_id=@product_id,productInfo_id=@productInfo_id,number=@number_2148 , number_name=@number_name_2148, number_note=@number_note_2148, deadline=@licenseDeadline_2148, date=@date_2148, readyImg=@ready_2148, designTeam=@designTeam_2148, dropDown=@dropDown_2148,cat=@cat_2148,productMilestones_id=@productMilestones_id_2148 where serial=@licenseId_2148;
update tbl_lecense_number set product_id=@product_id,productInfo_id=@productInfo_id,number=@number_2151 , number_name=@number_name_2151, number_note=@number_note_2151, deadline=@licenseDeadline_2151, date=@date_2151, readyImg=@ready_2151, designTeam=@designTeam_2151, dropDown=@dropDown_2151,cat=@cat_2151,productMilestones_id=@productMilestones_id_2151 where serial=@licenseId_2151;
update tbl_lecense_number set product_id=@product_id,productInfo_id=@productInfo_id,number=@number_2155 , number_name=@number_name_2155, number_note=@number_note_2155, deadline=@licenseDeadline_2155, date=@date_2155, readyImg=@ready_2155, designTeam=@designTeam_2155, dropDown=@dropDown_2155,cat=@cat_2155,productMilestones_id=@productMilestones_id_2155 where serial=@licenseId_2155;
update tbl_lecense_number set product_id=@product_id,productInfo_id=@productInfo_id,number=@number_2158 , number_name=@number_name_2158, number_note=@number_note_2158, deadline=@licenseDeadline_2158, date=@date_2158, readyImg=@ready_2158, designTeam=@designTeam_2158, dropDown=@dropDown_2158,cat=@cat_2158,productMilestones_id=@productMilestones_id_2158 where serial=@licenseId_2158;

begin tran 
开头 和结尾加一个 commit tran 和 begin tran

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧