加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – NOLOCK是SQL Server 2005中SELECT语句的默认值吗

发布时间:2020-12-12 06:22:48 所属栏目:MsSql教程 来源:网络整理
导读:虽然我需要与拥有2005年的客户进行沟通,但我只安装了SQL Server 2008R2. [1]告诉: “NOLOCK 这不会锁定任何对象.这是SELECT操作的默认值.它不适用于INSERT,UPDATE和DELETE语句“ [2]似乎没有提到它,但我在SSMS / SS 2008R2中的检查显示nolock不是SELECT的默
虽然我需要与拥有2005年的客户进行沟通,但我只安装了SQL Server 2008R2.

[1]告诉:

>“NOLOCK

这不会锁定任何对象.这是SELECT操作的默认值.它不适用于INSERT,UPDATE和DELETE语句“

[2]似乎没有提到它,但我在SSMS / SS 2008R2中的检查显示nolock不是SELECT的默认提示.

WITH(NOLOCK)在SQL Server 2005 SELECT中是否真的默认?
它在BOL2005 / 2008中写在哪里?

更新:
在“它在哪里写”我期望看到[1]部分引用的所有答案/评论/澄清(或更好的引用):

>“这不会锁定任何对象”

没有NOLOCK的SELECT是否在SQL Server 2005中放置任何锁(具有默认隔离级别READ UNCOMMITTED)?
…在SQL Server 2008中(分别是READ COMMITTED)?

我读到的内容可以理解为NOLOCK允许忽略/绕过另一个事务所放置的现有锁…但是目前还不清楚当前事务(SELECT与NOLOCK)是否放置(或试图放置)自己的锁. .

READ UNCOMMITTED隔离级别(用作使用NOLOCK提示的同义词)是否意味着没有任何锁定?
>“它不适用于INSERT,UPDATE和DELETE语句”
这似乎是正确的?
是因为它们(INSERT,UPDATE和DELETE)总是锁定但SELECT没有?
等等

[1]
http://blog.sqlauthority.com/2007/04/27/sql-server-2005-locking-hints-and-examples/
[2]
SQL Server 2005联机丛书.表提示(Transact-SQL)
http://msdn.microsoft.com/en-us/library/ms187373(SQL.90).aspx

解决方法

见 duplicate

NOLOCK不是默认值,不能设置为默认值. SQL Authority链接显然是错误的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读