在SQL Server存储过程中实现锁定

3

我有一个存储过程,它根据一些条件操作一个整数表字段(表示序列号) - 这些条件可以将该字段重置为零。在多用户环境中,存在这样的可能性:在另一个用户更新该字段之前,该字段可能会被1个用户引用,因此我想通过限制仅针对1个用户运行存储过程来防止这种情况。是否有办法在我的存储过程中实现这一点?

1个回答

7
如果你将语句置于事务内部,它们将被原子性地执行。但根据需要,你可能需要增加事务隔离级别
例如,如果你不希望在执行一系列语句时有其他人读取或写入特定表格,则可以在顶部添加此语句以实现该目的:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

除非绝对必要,否则我不建议提高到这个级别,因为它基本上会破坏并发性能的好处。

相反,考虑使用较低层次的东西或重新设计您的逻辑以消除对临界区的需求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接