允许多个用户更新相同的记录

时间:2014-05-20 04:17:42

标签: c# sql-server sql-server-2008

我的情况是数据库表中有一条记录,即'abcde'。用户'X','Y'和“Z”同时尝试更新该记录。

'X'修改abcde到abcdd

'Y'修改abcde到abddd

'Z'修改abcde到abeee

所有更改都应保留在数据库表中。

是否有可能提供解决方案。

3 个答案:

答案 0 :(得分:0)

如果要保留所有更改,则至少需要一个数据库表来跟踪所有这些更改...日志/历史记录表。 问题是,你想如何处理并发?如果您不关心它,并且您只想在此单个记录表中保留最后一次修改,那么您不需要任何进一步的操作,除了" logging"跟踪所有更改的功能。 但是,如果你关心并发并希望以不同的方式处理它,那么你应该看看运行具有最适合你需求的隔离级别的事务

答案 1 :(得分:0)

由于您只想为并发案例记录更新的记录。在表格中有一列DateTime,当您显示记录以保持日期时间的轨迹时。所以这是用例。

第一位用户更新了记录 - >使用DateTime列值中的change更新原始记录。

当第二个用户尝试更新时,您发现日期时间已更改,这意味着它不再是更新,它将是一个插入语句。

对于第三个用户,情况类似于2。

现在剩下数据库中的所有三条记录了。在这种情况下,主键需要有一些增量列,否则会引发错误。

答案 2 :(得分:0)

您可以在每个操作中使用触发器并将记录保存在另一个表中。捕获数据更改(CDC)也适用于您的情况。