【发布时间】:2018-02-09 00:26:15
【问题描述】:
文档指出Specifies that update locks are to be taken and held until the transaction completes. 因此,如果我不是交易,将其添加到我的查询中是否毫无意义?
【问题讨论】:
标签: sql sql-server tsql transactions
文档指出Specifies that update locks are to be taken and held until the transaction completes. 因此,如果我不是交易,将其添加到我的查询中是否毫无意义?
【问题讨论】:
标签: sql sql-server tsql transactions
SQL Server 中的一切都是在事务中完成的。无论您是否使用关键字Begin Transaction 显式打开事务,如果您没有显式打开事务(A.K.A Explicit Transaction),sql server 会自动将您的 t-sql 语句包装在事务中,也称为Implicit Transactions。
现在在事务(显式或隐式)期间,sql server 将获取资源(表、索引等)上的一些锁,根据正在执行的操作类型,sql server 获取不同类型的锁(共享锁、独占锁)锁等)
如果您在语句中使用 UPDLOCK(更新锁),它是一个排他锁,其他用户将无法在您的事务期间(显式或隐式)访问对象。
因此,如果您在查询的语句中使用提示 (UPDLOCK),无论您是否使用事务(显式事务)或不使用(隐式事务),都将获得排他锁,并在事务期间将对象独占锁定给您。
【讨论】: