gpt4 book ai didi

sql - sql server中这些关键字的用途是什么(UPDLOCK、ROWLOCK READPAST)

转载 作者:行者123 更新时间:2023-12-02 21:30:01 26 4
gpt4 key购买 nike

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

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

只要看看上面他们使用的sql UPDLOCK , ROWLOCK什么是UPDLOCK , ROWLOCK

UPDLOCK 会发生什么, ROWLOCK

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

什么是 READPAST ?当我们使用READPAST时然后会发生什么?

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

这里上面的sql使用ROWLOCK对于更新语句以及嵌套选择子查询......为什么?

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)

关于sql - sql server中这些关键字的用途是什么(UPDLOCK、ROWLOCK READPAST),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24224093/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com