https://bbs.csdn.net/topics/120000749

http://www.cnblogs.com/s021368/articles/2148659.html

问题:

udpate  a  
set   column1   =   1  
where   idx   =   1
sqlserver   执行update语句的时候,是锁整张表的吧

分析:

看表结构,   如果没有主键无法只锁定行

如果楼主要验证的话,   只需要类似下面的方法就行了:

--   开事务,   以保持锁
BEGIN   TRAN

--   更新
update  a  
set   column1   =   1  
where   idx   =   1

--   列出锁信息
EXEC   sp_lock   @@spid

--   提交或者回滚事务
COMMIT/ROLLBACK   TRAN

输出的结果大致是这样:

通过   dbid,   ObjId   可以找到你更新的表相关的锁记录
如果   IndId   为   0   ,   表示锁在表上,   否则在对应的索引上
通过   Type   列,   可以确定被锁定的是行/表,   或者是其他,   并且可以通过   Mode   看到是什么锁
在Status   中,   还可以看到锁是已经加上了,   还是在等待其他资源释放(以取得加锁的权利)

spid       dbid       ObjId               IndId     Type  
Resource                                       Mode  
        Status
------   ------   -----------   ------   ----   --------------------------   --------   ------
53           1             1115151018     0            
TAB                                              
            IS               GRANT

锁的类型(Tyep   列值,   RID   和   KEY   的话,   表示锁在行上)   有如下几种:
RID   =   表中单个行的锁,由行标识符   (RID)   标识。
KEY   =   索引内保护可串行事务中一系列键的锁。
PAG   =   数据页或索引页的锁。
EXT   =   对某区的锁。
TAB   =   整个表(包括所有数据和索引)的锁。
DB   =   数据库的锁。
FIL   =   数据库文件的锁。
APP   =   指定的应用程序资源的锁。
MD   =   元数据或目录信息的锁。
HBT   =   堆或   B   树索引的锁。在   SQL   Server   2005   中此信息不完整。
AU   =   分配单元的锁。在   SQL   Server   2005   中此信息不完整。

其它:

SELECT   *   FROM   table   WITH   (HOLDLOCK)   其他事务可以读取表,但不能更新删除

SELECT   *   FROM   table   WITH   (TABLOCKX)   其他事务不能读取表,更新和删除

sql server update时,是行锁还是表锁的更多相关文章

  1. Oracle\MS SQL Server Update多表关联更新

    原文:Oracle\MS SQL Server Update多表关联更新 一条Update更新语句是不能更新多张表的,除非使用触发器隐含更新.而表的更新操作中,在很多情况下需要在表达式中引用要更新的表 ...

  2. 解决将Excel表导入到SQL Server数据库时出现Text was truncated or one or more characters had no match in the target code错误

    编写python爬虫程序可以在电商.旅游等网站上爬取相关评论数据,这些数据可以用于词云制作.感情词分析.提取关键词等,也可以将爬取下来的数据以自己的方式进行展示.评论数据爬取下来后,就要考虑怎样入库, ...

  3. SQL SERVER Update from 使用陷阱

    原文:SQL SERVER Update from 使用陷阱 update A set from A left join B on 此方法常用来使用根据一个表更新另一个表的数据,来进行数据同步更新.若 ...

  4. SQL Server UPDATE语句的用法详解

    SQL Server UPDATE语句用于更新数据,下面就为您详细介绍SQL Server UPDATE语句语法方面的知识,希望可以让您对SQL Server UPDATE语句有更多的了解. 现实应用 ...

  5. 安装 SQL Server 2008 时提示需要删除 SQL Server 2005 Express 工具

    已安装 SQL Server 2005,安装 SQL Server 2008 时提示需要删除 SQL Server 2005 Express 工具 错误提示:已安装 SQL Server 2005 E ...

  6. Java运行环境eclipse配置环境变量 sql server登录时用的账户以及注册码

    2019/1/18 13:44:53a:右键点击计算机  →  选择属性  →  更改设置  →  点击高级  →  点击环境变量  →  创建名为JAVA_HOME的环境变量  →  将jdk所在的 ...

  7. SQL Server查询时添加一列连续的自增列

    SQL Server查询时添加一列连续的自增列 在SQL Server数据库中表信息会用到Identity关键字来设置自增列.但是当有数据被删除的话,自增列就不连续了.如果想查询出这个表的信息,并添加 ...

  8. 在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连

    在建立与服务器的连接时出错.在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连 sql server服务器sqlserver远程连接数据库防火墙在建立 ...

  9. sql锁的类型介绍:悲观锁,乐观锁,行锁,表锁,页锁,共享锁,排他锁,意向锁

    1 悲观锁,乐观锁 悲观锁:顾名思义,很悲观,就是每次拿数据的时候都认为别的线程会修改数据,所以在每次拿的时候都会给数据上锁.上锁之后,当别的线程想要拿数据时,就会阻塞,直到给数据上锁的线程将事务提交 ...

随机推荐

  1. antd拖拽排序

    https://segmentfault.com/a/1190000004006185?_ea=457266 https://react-dnd.github.io/react-dnd/

  2. MM/PP/SD/FICO 模块常用事物码(T-code)、SAP快捷键

    MM/PP/SD/FICO MM常用T-CODE MM01 创建一般物料 Create Material – GeneralMM02 修改一般物料 Change MaterialMM03 显示一般物料 ...

  3. urllib基本使用-Handler和自定义的opener()

    """ 基本的urlopen()方法不支持代理.cookie等其他的HTTP/HTTPS高级功能.所以要支持这些功能: 使用相关的 Handler处理器 来创建特定功能的 ...

  4. W​i​n​下​h​t​t​p​d​+​p​h​p​+​m​y​s​q​l​环​境​集​成

    apache+php+mysql: php下载:  VC6就是legacy Visual Studio 6 compiler,就是使用这个编译器编译的,  VC9就是the Visual Studio ...

  5. MongoDB save()方法和insert()方法的区别

    MongoDB save()方法和insert()方法的区别 首先看官方文档怎么说的 Updates an existing document or inserts a new document, d ...

  6. 50、Toast自定义布局

    <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http: ...

  7. 3673: 可持久化并查集 by zky

    3673: 可持久化并查集 by zky Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 2170  Solved: 978[Submit][Status ...

  8. EasyNVR浏览器无插件直播在Linux系统下将录像文件与EasyNVR可执行文件分离运行的方案

    问题背景 在工控机上运行EasyNVR,WEB访问出现设备在线,但是视频没有快照和无法正常直播: 问题原因分析 通过上工控机发现是由于磁盘空间被占满导致的软件运行收到影响. 解决问题分析 由于录像文件 ...

  9. 对django模型中的objects的理解

    object是模型属性,用于模型对象和数据库交互. object=Manager()是管理器类型的对象,是model和数据库进行查询的接口 可以自定义管理对象 books=models.Manager ...

  10. random生成六位随机数验证码

    需求: 生成一个六位随机验证码 # 傻瓜式纯数字实现import randomran = random.randint(100000, 999999) # ran = random.randrange ...