我有一个存储过程,它根据某些条件操作整数表字段(表示序列号) - 条件可以将字段重置为零。在多用户环境中,有一个用户可能会在另一个用户更新之前引用该字段,因此我希望通过将存储过程限制为一次仅运行1个用户来防止这种情况。有没有办法在我的存储过程中执行此操作?
答案 0 :(得分:7)
如果将语句包装在事务中,它们都将以原子方式执行。但是,您可能需要根据需要增加transaction isolation level。
例如,如果您在执行一堆语句时不希望任何其他人读取或写入特定表,则顶部的此语句将使这种情况发生:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
除非绝对必要,否则我不建议升级到此级别,因为它基本上会破坏并发优势。
相反,请考虑使用较低的值或重新设计逻辑以消除关键部分的需要。