即使没有显式事务,SQL Server是否会获取锁?

Has*_*oun 3 t-sql sql-server concurrency locking transactions

我第一次阅读有关MSSQL Locking的内容,而且很多地方,锁定机制概念取决于事务的存在.我想知道在没有涉及任何交易的情况下是否可以锁定(一般情况下)?

Dan*_*man 7

如果不存在显式事务,则每个SQL语句都在自动(自动提交)事务中执行.在这种情况下,将应用正常锁定行为,并在语句完成时自动事务完成时释放锁.


Dav*_*oft 7

是.在几个隔离级别(包括默认的READ COMMITTED)下,查询采用共享(S)锁定,这将阻止更改数据所需的锁定.

每个UPDATE,INSERT,DELETE和MERGE都在单语句事务中运行,即使您没有通过显式启动事务也是如此BEGIN TRANSACTION.