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. PowerDesigner之设置(3)——根据Name首字母生成Code

    SQL版本:2000 PowerDesigner版本:16 网上有不少介绍 PowerDesigner Name/Code自动调整 的文章,但基本如出一辙. 这里,我就介绍下如何根据输入的Name根据 ...

  2. 借助EasyNTS云组网,无需拉专线,也能解决设备现场无公网固定IP的问题

    一.产品背景 为了帮助企业和个人用户解决网络访问和设备控制的问题,我们研发了一款创新型产品:EasyNTS云组网系统.什么是EasyNTS,什么是云组网呢? 在解释之前,我们先来了解几个在凡是涉及网络 ...

  3. Instapaper 使用经验和技巧

    Instapaper 分类本质是文件夹整理,没有标签. 文件夹意味着一篇文章只能放在一个文件夹里,不像标签可以实现一篇文章多个标签的功能. 一.文件夹和Like功能 1.已有文件夹: Home:存放所 ...

  4. _ 下划线 Underscores __init__

    Underscores in Python https://shahriar.svbtle.com/underscores-in-python Underscores in Python This p ...

  5. 【22,23节】Django的GET和POST属性笔记

    COOKIES:一个标准的python字典对象,包含所有cookies,键和值都为字符串session:一个即能读又能写的类似字典对象,表示当前的会话,只有当django启用会话的支持时才可用 一键多 ...

  6. mysql用户授权以及权限收回

    语法 GRANT privileges [(columns)] ON DATABASE.TABLE TO 'username'@'hostname' [IDENTIFIED BY [PASSWORD] ...

  7. 我的Android进阶之旅------>Android关于dp(dip)、sp转px的工具类

    下面是一个工具类,提供了dp.sp.px之间相互转化的方法. import android.content.Context; /** * dp.sp 转换为 px 的工具类<br> * & ...

  8. springMVC文件的上传与下载

    1.文件上传 springmvc中只需要配置上传组件,然后配合使用MultipartFile,就可以轻松实现单个文件上传和批量上传,而且上传的文件类型和大小都可以在springmvc 配置文件中配置. ...

  9. corethink功能模块探索开发(四)让这个模块跑起来

    让这个模块跑起来,太费劲了,多半原因是自己太粗心,opencmf.php中“uid”写成了“pid”,de了好几天的bug也没有搞出来,又加上最近发生了些事(brokenhearted)... 上报错 ...

  10. mysq数据库的安装和基本操作

    一.数据库的简介 1.什么是数据库? 数据库(database,DB)是指长期存储在计算机内的,有组织,可共享的数据的集合.数据库中的数据按一定的数学模型组织.描述和存储,具有较小的冗余,较高的数据独 ...