我有很多关于数据库的数据,很多用户都在通过async JS更新这些数据。 我想阻止多个用户修改数据库上的同一行。当用户1单击网页中的编辑行时,我想向服务器发送信号并锁定该行。所以其他用户不会在同一行上访问编辑模式。当用户完成编辑行时,他/她将点击确定,更新将被提交并且行将被解锁。我搜索谷歌这种做法,但所有的SQL锁是单一交易。有什么办法可以做到这一点?我很乐意在不改变我的db设计的情况下解决这个问题。但如果没有解决方案,而发生变化,许多工作会等着我:)Mssql 2012 Row Locking
0
A
回答
0
尝试是朝着这个:http://en.wikipedia.org/wiki/Optimistic_concurrency_control
每当该行被保存在lock_version场计数。无论何时在该行上进行保存,它都会查看数据库上的lock_version是否与内存中保存的lock_version相同。如果版本不同,该行已被其他用户更改。在这里,你可以做任何事情:
- 从数据库中重新加载该行并添加更改,然后重新保存
- 只是抛出一个异常,让用户处理它
如果你真的想往的东西你提出的建议是,你需要用行上的某种标记来处理这个问题,这是你在用户编辑行时设置的。
- 用户开始编辑该行 - >设置锁定为真正的
- 另一个用户试图修改该行的标志 - >此
- 用户结束编辑行标记将阻止 - >设置锁定标志假
然而,这会给你各种问题......尽量避免这种令人费解的锁定处理,并用一些简单的像乐观的去锁定
相关问题
- 1. ADO.Net vs ADO Record Locking
- 2. MSSQL Server 2012和pypyodbc
- 3. Mssql 2012与PHP和Mysql到Mssql迁移
- 4. Spring Hibernate Locking
- 5. Jenkins Dynamic Locking
- 6. 导入数据到MSSQL 2012
- 7. Swift Queues/Concurrency and Locking
- 8. `pandas.DataFrame.apply` in row by row operation
- 9. MSSQL 2012企业版与MSSQL的json功能2016
- 10. php连接与mssql(sql server 2012)
- 11. 的JRuby(1.7.5)+ MSSQL-2012 + torquebox 2.2.0 DB问题
- 12. MSSQL 2012附近有语法错误“>”
- 13. MSSQL 2012拆分记录到多个行
- 14. 从柱= 1和第2列MSSQL 2012
- 15. 无法连接到MSSQL数据库2012
- 16. SetText row by row
- 17. MSSQL 2012数据库可以在MSSQL 2008服务器上工作吗?
- 18. SQL Server 2012 - 将ROW压缩转换为PAGE压缩
- 19. vb.net add row in row xml
- 20. while($ row)not showing every row
- 21. 与CURRENT ROW
- 22. 调用成员函数row()error | $ row = $ query-> row(); | CodeIgniter
- 23. MSSQL 2012 - 在子查询中返回多个列
- 24. 创建用于WCF的CLR触发器的MSSQL 2012失败
- 25. 通过服务器2012上的PHP连接到MSSQL
- 26. 无法使用sqljdbc4.jar连接到MSSQL Server 2012
- 27. 安装2012后可以安全删除MSSQL Server 2008 R2吗?
- 28. 带有聚合和类似子句的case语句 - MSSQL 2012
- 29. rails 4.2 + mssql 2012+ tiny_tds + freetds + activerecord-sqlserver-adaptor at windows
- 30. MSSQL 2012:通过使用变量删除XML属性
什么样的问题,你在想什么?对你的第二个建议 – bahadir
现在只有一个想法:)。并发问题:第一个用户想要打开该行进行编辑,因此他读取该行,然后将其保存并将锁定标志设置为true,同时另一个用户读取该行时,第一个用户的保存尚未完成。现在你有两个用户正在编辑同一行。 您可能需要将这些步骤包装到事务中以防止出现此类问题(在此期间,需要为其他读取或写入操作锁定该行) –