Jac*_*cko 5 sql sql-server transactions
我想在一个事务中执行以下操作:
事务隔离设置为read-commited,服务器是SQL Server.
在阅读之后,如何保证另一个事务不会为列写入不同的值?如果另一个事务更改了列,服务器是否会拒绝我的写入?
换句话说,SQL服务器可以用作给定列的分布式锁吗?
在这种情况下,您需要使用REPEATABLE READ隔离级别。与READ COMMITTED另一笔交易可以改变您的记录。
如果您可以在 1 个查询中重写逻辑(例如,使用updateor merge),您仍然可以使用READ COMMITTED. 但有时这不是一个选择。例如,
SELECT ... ;
IF some_condition
BEGIN
// execute a procedure, select from other tables, etc
END
ELSE
BEGIN
// execute another procedure, do some other stuff
END;
// finally update the record
UPDATE ....
Run Code Online (Sandbox Code Playgroud)
更新
我忘了提到另一个选项:REPEATABLEREAD 在SELECT语句中使用表提示(详情请参阅)
| 归档时间: |
|
| 查看次数: |
154 次 |
| 最近记录: |