-1
我正在处理会计项目并面临并发更新问题。我按照下面方案
1)用户1检索COLUMN1数据
2)用户2还检索COLUMN1数据
3),同时更新用户2列1的数据用户1更新列1数据
4)我必须告诉用户列1的数据是已经更新请刷新细节&如果从原始修改更新。并发问题,当更新sql服务器表列
,我不希望从检索其已经被用户1,检索如何处理这种类型的并发或任何内建的功能在SQL Server中提供的数据限制用户2?
我正在处理会计项目并面临并发更新问题。我按照下面方案
1)用户1检索COLUMN1数据
2)用户2还检索COLUMN1数据
3),同时更新用户2列1的数据用户1更新列1数据
4)我必须告诉用户列1的数据是已经更新请刷新细节&如果从原始修改更新。并发问题,当更新sql服务器表列
,我不希望从检索其已经被用户1,检索如何处理这种类型的并发或任何内建的功能在SQL Server中提供的数据限制用户2?
重申你的问题我的理解是:
- 用户1 retrived COLUMN1数据
- 用户2也retrived COLUMN1数据
- 用户1更新COLUMN1数据
- 用户2要更新列1上的陈旧数据。您希望提醒用户2数据已过时,用户2应该执行刷新(获取最新值),然后再次更新。
这正是rowversion的用途。您将此记录添加到新记录中。每当数据在记录上发生变化时,Sql服务器将处理分配值并增加它们。您应该检索该值以及该记录的其他相关详细信息,然后将其包含在更新声明中。如果值不匹配,则表示存在并发性错误,则记录在用户检索数据的最后一次和希望更新数据的时间之间更新。
另请注意,在这种情况下,任何时候对记录进行任何更改都会改变rowversion,而不仅仅是针对该特定列。
在表中执行rowversion后的逻辑。
UPDATE
语句的WHERE
子句中的rowversion值。
rowversion
值。 (或者该记录已被删除,但假设情况并非)。
您可以[设置事务隔离级别(http://sqlperformance.com/2014/07/t-sql-queries/isolation-levels) – stuartd