Db并发:字段与UPDLOCK

时间:2014-09-25 10:30:23

标签: sql-server concurrency commit rollback

我正在使用SQL Server在Omnis中开发企业资源规划。

多个用户将读取 - 更新 - 删除ecords,因此我必须处理并发。

我看到两种可能的解决方案。我已经知道如何处理这两个问题。 我只是问你哪个更好。

自动解决方案 设置事务模式=自动,因此BEGIN-COMMIT-ROLLBACK事务由软件自动完成,但根本没有并发控制。 我可以在每个包含阻止记录的用户名的表上使用一个字段,如果为空则用户可以更新记录并将用户名存储在字段中, 如果该字段不为空,我将显示阻止该字段的用户。

手动解决方案 设置事务模式=手动,所以我必须处理BEGIN-COMMIT-ROLLBACK,但我可以使用UPDLOCK和ROWLOCK之类的东西。

你是否看到使用字段代替UPDLOCK和ROWLOCK作为一种糟糕的做法? 还有其他的利弊吗?

由于

1 个答案:

答案 0 :(得分:0)

这不是字段vs UPDLOCK。问题应该是业务逻辑是什么以及你将采用哪种方式。

您到底遇到哪些并发问题以及如何解决这些问题?

如果有两个或更多并发代码,您的代码应该做什么:

  • 插入相同数据
  • 同一行的更新
  • 删除并更新同一行
  • mb more here

然后您的回答是以下问题: AUTOMATIC SOLUTION会做你需要的或不做的事吗?或者你必须实现手动控制?