如何在SQL Server中锁定表?我找到了带锁的运行查询,但也读取了事务 困惑如何使用这些。
我有两个进程首先读取表,然后更新其中的数据。我希望只有一个更新,其他人在阅读中获得此更新。我的流程的工作如下: -
谢谢
答案 0 :(得分:2)
您可以使用TABLOCKX
提示来锁定整个表格,但锁定整个表格通常是一个坏主意,如果您确实需要,可能需要重新考虑。
如果您想确保更新最新数据,可以使用rowversion
列,并在更新前仔细检查,而不是锁定整个表格进行阅读。
答案 1 :(得分:1)
在您的select语句中,您可以提供“select for update”table hint:with (updlock)
。根据您要更新的记录百分比及其物理分布,这可能比表锁更好。
但正如Fedor Hajdu指出的那样,你可能想要的是一种乐观的锁定方案。查看READ COMMITTED SNAPSHOT隔离级别的文档。您可能还会发现这个article非常有用。