这些关键字在sql server中的用途是什么(UPDLOCK,ROWLOCK READPAST)[关闭]

2024-03-09

我想知道这些关键字在sql server中有什么用(UPDLOCK, ROWLOCK READPAST)以及何时使用它?我的意思是人们在什么样的情况下会选择(UPDLOCK, ROWLOCK READPAST).

1) select top 1 COMMAND
from EXAMPLE_TABLE
with (UPDLOCK, ROWLOCK)
where PROCESSED=false;

看看上面他们使用的sqlUPDLOCK, ROWLOCK什么是UPDLOCK, ROWLOCK?

会发生什么UPDLOCK, ROWLOCK ?

2) SELECT TOP(1) COMMAND, PROCESSED
  FROM TABLE WITH (READPAST)
  WHERE PROCESSED = 0

what is READPAST?当我们使用READPAST那么会发生什么呢?

3) UPDATE  OrderTable WITH ( ROWLOCK )
    SET     ProcessorID = @PROCID
    WHERE   OrderID IN ( SELECT TOP ( 20 )
                                        OrderID
                                FROM    OrderTable WITH ( ROWLOCK )
                                WHERE   ProcessorID = 0)

这里使用上面的sqlROWLOCKfor update 语句以及嵌套选择子查询......为什么?

会发生什么ROWLOCK ?

我的请求是,请用大量示例来解释每一点,以便我能够理解这些关键字的用法。谢谢


他们是 (DML) 指定锁定方法的语句:

UPDLOCK对正在选择的行放置更新锁,直到事务结束。 其他事务不能更新或删除该行,但可以选择它。

ROWLOCK将锁放置在行级别,而不是页锁或表锁。

READPAST锁定的记录不会返回

这是使用这两个语句的示例,这意味着其他事务在第一个事务结束之前无法读取更新或删除数据。

BEGIN TRAN

  select top 1 COMMAND
  from EXAMPLE_TABLE
  with (UPDLOCK, ROWLOCK)
  where PROCESSED=false;

ROLLBACK

这里交易还没有结束:

BEGIN TRANSACTION

      UPDATE TOP(1) EXAMPLE_TABLE
      SET colum1 = colum1 + 1

如果执行 select 语句,则不会返回被锁定的记录,例如:

SELECT COUNT(*)

FROM EXAMPLE_TABLE WITH(READPAST)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

这些关键字在sql server中的用途是什么(UPDLOCK,ROWLOCK READPAST)[关闭] 的相关文章

随机推荐