asp.net后台能锁住数据库的表吗?

小路子的宝 2016-12-26 05:10:43
使只能当前用户增删改操作,其他用户可以查询这张表数据。
现在写在数据库事务里面,执行的事务的时候,其他用户都不能访问这个表。使得系统好慢。 求帮助100分献上
...全文
650 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
by_封爱 2017-01-06
  • 打赏
  • 举报
回复
这个功能 其实我个人感觉 跟数据库没什么关系.. 按照楼上这么多大神的说法.我关闭网页无法触发某些事件 那么这个系统还用不了了呢.. 所以这个问题的本质 就是 在web中 "独占页面". 比如A访问了A页面..这个时候 B要访问 会提示"当前页面正在访问中,." 而不是去关心什么数据库的加锁事物之类的问题. 如果按照这个思路来说 使用websocket即可实现.. 页面加载完毕 open的时候发送当前用户以及当前页面.服务器用dic的方式保存起来.<aspx,user> 然后服务端做判断 如果已经存在的aspx.那么给当前对象输出你固定的"协议" 网页这边onmessage的时候 判断即可...
小路子的宝 2017-01-06
  • 打赏
  • 举报
回复
共享锁就可以了
风寒晓 2017-01-05
  • 打赏
  • 举报
回复
无需使用数据库自带的事务和锁。 一般从程序的角度去解决,更加高效和便利,就像很多高手从不用外键一样。 我给出建议方案,可以结贴给分,嘎嘎: 給表增加一个flag 字段 int,初始插入数据库该字段为0。 客户端每打开一次,前端界面 绑定该字段的时候 +1,提交保存的时候 update table set flag=@flag where flag =@flag -1。 玄机 举例: 假如有A B C 三个人同时打开, 网页flag 都显示为1。 现在 C 提交保存,where flag=@flag-1 是有效的,则提交保存,此时数据库的flag 为0,界面的flag 为1。 A 和 B 再提交,则提交保存失败,因为此时数据库的flag 为1, 而 A 和B 界面的flag 还是为1, 1-1 =0 不等于数据库的1。 这样就有效的实现了单人有效修改。
闭包客 2016-12-28
  • 打赏
  • 举报
回复
引用 5 楼 closurer 的回复:
【其他用户都不能访问这个表】这个判断可能有误。系统慢不是因为这个。 默认的情况下,读取数据的锁与你的更新事务是不会互斥的。
更正一下,是会互斥的。
闭包客 2016-12-28
  • 打赏
  • 举报
回复
问题的根源还是更新事务太慢了。
闭包客 2016-12-28
  • 打赏
  • 举报
回复
引用 16 楼 xiaopeng0504 的回复:
优化一下你的更新事务,查询语句使用脏读吧。
小路子的宝 2016-12-28
  • 打赏
  • 举报
回复
小路子的宝 2016-12-27
  • 打赏
  • 举报
回复
自己帮自己顶!d=====( ̄▽ ̄*)b
小路子的宝 2016-12-27
  • 打赏
  • 举报
回复
引用 13 楼 closurer 的回复:
[quote=引用 9 楼 xiaopeng0504 的回复:] [quote=引用 5 楼 closurer 的回复:] 【其他用户都不能访问这个表】这个判断可能有误。系统慢不是因为这个。 默认的情况下,读取数据的锁与你的更新事务是不会互斥的。
但是我测试事物在运行的时,事物里面的表,我其他用户都访问不了。就会造成页面报错[/quote] 要看报什么错,如果是数据库的锁,报的应该是超时异常。[/quote]是啊,就是数据库的锁。事物没运行完,其他用户访问就超时
小路子的宝 2016-12-27
  • 打赏
  • 举报
回复
引用 4 楼 MrMicrosoft 的回复:
是不是要数据库本身支持这样的功能呢
数据库能锁
引用 12 楼 closurer 的回复:
[quote=引用 9 楼 xiaopeng0504 的回复:] [quote=引用 5 楼 closurer 的回复:] 【其他用户都不能访问这个表】这个判断可能有误。系统慢不是因为这个。 默认的情况下,读取数据的锁与你的更新事务是不会互斥的。
但是我测试事物在运行的时,事物里面的表,我其他用户都访问不了。就会造成页面报错[/quote] 那你是想其他用户能用?还是不能用?[/quote]能查询,就不会造成页面报错了
闭包客 2016-12-27
  • 打赏
  • 举报
回复
引用 9 楼 xiaopeng0504 的回复:
[quote=引用 5 楼 closurer 的回复:] 【其他用户都不能访问这个表】这个判断可能有误。系统慢不是因为这个。 默认的情况下,读取数据的锁与你的更新事务是不会互斥的。
但是我测试事物在运行的时,事物里面的表,我其他用户都访问不了。就会造成页面报错[/quote] 要看报什么错,如果是数据库的锁,报的应该是超时异常。
闭包客 2016-12-27
  • 打赏
  • 举报
回复
引用 9 楼 xiaopeng0504 的回复:
[quote=引用 5 楼 closurer 的回复:] 【其他用户都不能访问这个表】这个判断可能有误。系统慢不是因为这个。 默认的情况下,读取数据的锁与你的更新事务是不会互斥的。
但是我测试事物在运行的时,事物里面的表,我其他用户都访问不了。就会造成页面报错[/quote] 那你是想其他用户能用?还是不能用?
  • 打赏
  • 举报
回复
引用 8 楼 xiaopeng0504 的回复:
引用 6 楼 Hello_Ge 的回复:
是同时只能有一个用户可以增删改?
嗯,是的。有办法吗
能否让用户不直接访问数据库,用户访问webserver,在webserver中加锁
小路子的宝 2016-12-27
  • 打赏
  • 举报
回复
引用 5 楼 closurer 的回复:
【其他用户都不能访问这个表】这个判断可能有误。系统慢不是因为这个。 默认的情况下,读取数据的锁与你的更新事务是不会互斥的。
但是我测试事物在运行的时,事物里面的表,我其他用户都访问不了。就会造成页面报错
小路子的宝 2016-12-27
  • 打赏
  • 举报
回复
引用 6 楼 Hello_Ge 的回复:
是同时只能有一个用户可以增删改?
嗯,是的。有办法吗
小路子的宝 2016-12-27
  • 打赏
  • 举报
回复
引用 2 楼 hanjun0612 的回复:
使只能当前用户增删改操作,其他用户可以查询这张表数据 这句话是什么意思? 2个人同时登陆,那么谁才是当前用户? 如果只是设置数据库的用户权限 那么参照 使只能当前用户增删改操作,其他用户可以查询这张表数据 如果你说的是由于有一个用户在操作,导致表的被锁住,那么在sql中添加 with no lock
不好意思我想说的意思是 1、我说的用户是访问web页面的用户 2、先进入lock的用户可以增删改这张表,其他用户不能对这张表进行操作。
  • 打赏
  • 举报
回复
是同时只能有一个用户可以增删改?
闭包客 2016-12-27
  • 打赏
  • 举报
回复
【其他用户都不能访问这个表】这个判断可能有误。系统慢不是因为这个。 默认的情况下,读取数据的锁与你的更新事务是不会互斥的。
  • 打赏
  • 举报
回复
是不是要数据库本身支持这样的功能呢
加载更多回复(2)

62,244

社区成员

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

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

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

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