锁定 SQL Server 存储过程
Posted
技术标签:
【中文标题】锁定 SQL Server 存储过程【英文标题】:Locking in a SQL Server Stored Procedure 【发布时间】:2009-01-20 18:17:50 【问题描述】:我有一个存储过程,它根据某些标准操作整数表字段(表示序列号) - 标准可以将该字段重置为零。在多用户环境中,该字段可能在被另一个用户更新之前被 1 个用户引用,所以我想通过将存储过程限制为一次只为 1 个用户运行来防止这种情况。有没有办法在我的存储过程中做到这一点?
【问题讨论】:
【参考方案1】:如果您将语句包装在事务中,它们将全部以原子方式执行。不过,您可能需要根据需要增加transaction isolation level。
例如,如果您不希望其他人在执行一堆语句时读取或写入特定表,则顶部的此语句将实现这一点:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
我不建议升级到这个级别,除非绝对必要,因为它基本上破坏了并发优势。
相反,请考虑使用较低的内容或重新编写逻辑以消除对关键部分的需求。
【讨论】:
以上是关于锁定 SQL Server 存储过程的主要内容,如果未能解决你的问题,请参考以下文章