更新时无需锁定事务内部

5 sql-server

在 SQL Server 中使用单个活动连接可能出现以下情况吗?

在 READCOMMITED 事务中,我需要更新一个表而不锁定它。例如,每次执行语句时,我都会增加该表中的一个字段。如果事务失败,则无需回滚此操作。此外,此更新不应阻止尝试更新同一位置的其他并发用户。

Cha*_*ana 1

如果不对表加锁,则无法执行更新。这是为了允许其他事务的事务隔离级别控制它们是否可以“看到”更新中所做的更改。您可以更改更新的事务隔离级别,但这只会影响更新会话,(在您设置的位置)控制更新是否可以“查看”其他会话中所做的更改...

如果您希望其他 Sql 语句能够看到您在此更新中所做的事情,就好像它没有被锁定一样,您必须将其他 tx 上的事务隔离级别更改为“读取未提交”。(请注意这一点...此隔离级别可能会导致数据库出现大量不一致情况。)