Sql server 数据库并发性:字段与UPDLOCK
我正在使用SQL Server在Omnis中开发企业资源规划 多个用户将读取更新删除ecords,因此我必须处理并发性 我认为有两种可能的解决办法。我已经知道如何处理这两个问题了。 我只是问你哪一个更适合你 自动解决方案 设置事务模式=自动,因此BEGIN-COMMIT-ROLLBACK事务由软件自动完成,但根本没有并发控制。 我可以在每个表中使用一个字段,其中包含阻止记录的用户的名称,如果为空,用户可以更新记录,我将用户名存储在该字段中, 如果该字段不为空,我将显示阻止该字段的用户 手动解决方案 设置transaction mode=Manual,因此我必须处理BEGIN-COMMIT-ROLLBACK,但是我可以使用UPDLOCK和ROWLOCK之类的东西 您是否认为使用字段而不是带ROWLOCK的UPDLOCK是一种糟糕的做法? 还有其他的赞成和反对意见吗Sql server 数据库并发性:字段与UPDLOCK,sql-server,concurrency,commit,rollback,Sql Server,Concurrency,Commit,Rollback,我正在使用SQL Server在Omnis中开发企业资源规划 多个用户将读取更新删除ecords,因此我必须处理并发性 我认为有两种可能的解决办法。我已经知道如何处理这两个问题了。 我只是问你哪一个更适合你 自动解决方案 设置事务模式=自动,因此BEGIN-COMMIT-ROLLBACK事务由软件自动完成,但根本没有并发控制。 我可以在每个表中使用一个字段,其中包含阻止记录的用户的名称,如果为空,用户可以更新记录,我将用户名存储在该字段中, 如果该字段不为空,我将显示阻止该字段的用户 手动解决方
谢谢这不是场对战升级锁。问题应该是什么是业务逻辑,以及您将以何种方式实现它 你到底有哪些并发问题,应该如何解决 如果存在两个或多个并发代码,您的代码应该执行什么操作:
- 相同数据的插入
- 同一行上的更新
- 删除和更新同一行
- 这里有更多mb
是否执行
自动解决方案
是否执行您需要的操作?或者您必须执行手动控制?如果用户A正在更新一行,其他用户只能读取该行。如果他们试图更新或删除同一行,屏幕上会显示一条消息,通知用户A正在更新该记录。我需要的就是这个。你不应该把交易和屏幕上的信息混在一起。您不希望事务由用户输入控制。最好在应用程序中编写所有“屏幕锁定”逻辑。示例:用户编辑行-写入日志,第二个用户无法编辑该行,日志将更新关于行释放的信息。如果您正确,我将使用手动模式。我将负责begin-commit-rollback,并且我将使用一个特定字段来指示哪个用户正在修改记录。谢谢