当前位置: 首页 > 面试题库 >

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

漆雕成弘
2023-03-14
问题内容

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

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

只是看到他们使用上面的SQL UPDLOCKROWLOCK是什么UPDLOCKROWLOCK

会发生什么UPDLOCKROWLOCK

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)

这里上面的sqlROWLOCK用于更新语句,并且还在嵌套的select子查询中……为什么?

会发生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)


 类似资料:
  • 我们可以编写包含或不包含的代码,如下所示。 或 的实际用途是什么?。这是内存效率更高还是可读性更强?

  • 新的SwiftUI教程包含以下代码: 第二行是单词,在他们的网站上突出显示,就好像它是一个关键字一样。 Swift 5.1似乎没有将作为关键字,我看不出单词还能在那里做什么,因为它去了类型通常去的地方。斯威夫特有没有新的、未宣布的版本?这是一个函数,正在使用的类型,以我不知道的方式? 关键字的作用是什么?

  • 问题内容: 我正在学习如何将Redis用于我的项目。我没弄清楚的一件事是键名称中冒号的确切用途。 我看到过这样的键名: 冒号是否将密钥分为几类,从而使查找密钥的速度更快?如果是这样,您在命名键时可以使用多个冒号将它们划分为子类别吗?最后,它们与在Redis服务器中定义不同的数据库有关吗? 我已经阅读了文档,并对此事进行了大量Google搜索,但奇怪的是我找不到任何讨论此事的信息。 问题答案: 冒号

  • 问题内容: 在JavaScript中的关键字可能会相当混乱首次遇到它的时候,人们往往会认为JavaScript是不是面向对象的编程语言。 它是什么? 它解决什么问题? 什么时候合适,什么时候不合适? 问题答案: 它做五件事: 它创建一个新对象。这个对象的类型就是 object 。 它将这个新对象的内部不可访问的 [[prototype]] (即 proto )属性设置为构造函数的外部可访问 原型

  • 问题内容: 来自标准库的文件包含围绕228行的以下几行代码: 在这种情况下是什么意思,或者通常是什么关键字? 问题答案: 是Swift 3中的新访问级别,随实现而引入 SE-0117允许区分公共访问权限和公共替代权限 从2016年8月7日开始,Swift 3快照和Xcode 8 beta 6都可以使用它。 简而言之: 在定义模块之外, 可以访问 和 可继承 一个类。一类成员是 可访问 和 可重写