回答

收藏

这些关键字在sql server(UPDLOCK,ROWLOCK READPAST)用途是什么?

技术问答 技术问答 290 人阅读 | 0 人回复 | 2023-09-14

我想知道这些关键字在我想知道sql server(UPDLOCK,ROWLOCKREADPAST)什么时候用?我的意思是人们会遇到什么?(UPDLOCK,ROWLOCK READPAST)。
/ q+ j& a% K. ?2 X, d; b' u1) select top 1 COMMANDfrom EXAMPLE_TABLEwith (UPDLOCK,ROWLOCK)where PROCESSED=false;只看他们用上面的。SQL UPDLOCK,ROWLOCK是什么UPDLOCK,ROWLOCK?% H& [2 ]+ }  O, z! W" i) E" ~
会发生什么UPDLOCK,ROWLOCK?: \3 o8 j; [. w4 O6 }$ R! Z
2) SELECT TOP(1) COMMAND,PROCESSED  FROM TABLE WITH (READPAST)  WHERE PROCESSED = 0什么是READPAST?当我们使用它时READPAST会发生什么?# J, }8 ^  U8 e) Y
3) UPDATE  OrderTable WITH ( ROWLOCK )  SET     ProcessorID = @PROCID    WHERE   OrderID IN ( SELECT TOP ( 20 )                                      OrderID                                FROM    OrderTable WITH ( ROWLOCK )                              WHERE   ProcessorID = 0)这里上面的sqlROWLOCK用于更新句子并嵌套select子查询中……为什么?
+ [/ s2 }- i  s; R3 U会发生ROWLOCK什么?
5 O# Y' w' I, h6 `- v$ R我的要求是,请用大量的例子来解释每个关键点,以便我能够理解这些关键字的用法。
9 y8 e* [) Q( f/ _3 X+ o                                                                / x+ z" Q- k5 g) Y( ?  ^
    解决方案:                                                                1 |( T- B* I, T" ?& d
                                                                它们是DML()语句用于指定锁定方法:
. w, h( b. Q: @4 RUPDLOCK将更新锁放在选定的行上,直到事务结束。其他事务不能更新或删除,但允许他们选择。0 F3 N/ U* p$ I$ m
ROWLOCK 将锁放在与页面或表面锁相对的行级上。
. ~# o' D$ L7 \8 u. sREADPAST 锁定记录不返回# M! @6 C9 W& J0 m
这是同时使用这两个语句的示例,这意味着在第一个事务结束之前,其他事务无法读取更新或删除数据。& k! H5 F% n- K3 b
BEGIN TRAN  select top 1 COMMAND  from EXAMPLE_TABLE  with (UPDLOCK,ROWLOCK)  where PROCESSED=false;ROLLBACK交易尚未结束:
0 Y/ p0 q2 h3 h% g! Z0 `) ]BEGIN TRANSACTION      UPDATE TOP(1) EXAMPLE_TABLE      SET colum1 = colum1   1如果执行select例如:# i- {3 M" I. J5 F! @! G+ P# R% Q
SELECT COUNT(*)FROM EXAMPLE_TABLE WITH(READPAST)
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则