1 如何锁一个表的某一行 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED SELECT * FROM table ROWLOCK WHERE id = 1 2 锁定数据库的一个表 SELECT * FROM table WITH (HOLDLOCK) 加锁语句: sybase: update 表 set col1=col1 where 1=0 ; MSSQL: select col1 from 表 (tablockx) where 1=0 ; oracle: LOCK TABLE 表 IN EXCLUSIVE MODE ; 加锁后其它人不可操作,直到加锁用户解锁,用commit或rollback解锁 几个例子帮助大家加深印象 设table1(A,B,C) A B C a1 b1 c1 a2 b2 c2 a3 b3 c3 1)排它锁 新建两个连接 在第一个连接中执行以下语句 begin tran update table1 set A='aa' where B='b2' waitfor delay '00:00:30' --等待30秒 commit tran 在第二个连接中执行以下语句 begin tran select * from table1 where B='b2' commit tran 若同时执行上述两个语句,则select查询必须等待update执行完毕才能执行即要等待30秒 2)共享锁 在第一个连接中执行以下语句 begin tran select * from table1 holdlock -holdlock人为加锁 where B='b2' waitfor delay '00:00:30' --等待30秒 commit tran 在第二个连接中执行以下语句 begin tran select A,C from table1 where B='b2' update table1 set A='aa' where B='b2' commit tran 若同时执行上述两个语句,则第二个连接中的select查询可以执行 而update必须等待第一个事务释放共享锁转为排它锁后才能执行 即要等待30秒 3)死锁 增设table2(D,E) D E d1 e1 d2 e2 在第一个连接中执行以下语句 begin tran update table1 set A='aa' where B='b2' waitfor delay '00:00:30' update table2 set D='d5' where E='e1' commit tran 在第二个连接中执行以下语句 begin tran update table2 set D='d5' where E='e1' waitfor delay '00:00:10' update table1 set A='aa' where B='b2' commit tran 同时执行,系统会检测出死锁,并中止进程 补充一点: Sql Server2000支持的表级锁定提示 HOLDLOCK 持有共享锁,直到整个事务完成,应该在被锁对象不需要时立即释放,等于SERIALIZABLE事务隔离级别 NOLOCK 语句执行时不发出共享锁,允许脏读 ,等于 READ UNCOMMITTED事务隔离级别 PAGLOCK 在使用一个表锁的地方用多个页锁 READPAST 让sql server跳过任何锁定行,执行事务,适用于READ UNCOMMITTED事务隔离级别只跳过RID锁,不跳过页,区域和表锁 ROWLOCK 强制使用行锁 TABLOCKX 强制使用独占表级锁,这个锁在事务期间阻止任何其他事务使用这个表 UPLOCK 强制在读表时使用更新而不用共享锁 应用程序锁: 应用程序锁就是客户端代码生成的锁,而不是sql server本身生成的锁 处理应用程序锁的两个过程 sp_getapplock 锁定应用程序资源 sp_releaseapplock 为应用程序资源解锁 注意: 锁定数据库的一个表的区别 SELECT * FROM table WITH (HOLDLOCK) 其他事务可以读取表,但不能更新删除 SELECT * FROM table WITH (TABLOCKX) 其他事务不能读取表,更新和删除 1 如何锁一个表的某一行 /* 测试环境:windows 2K server + Mssql 2000 所有功能都进行测试过,并有相应的结果集,如果有什么疑义在论坛跟帖 关于版权的说明:部分资料来自互联网,如有不当请联系版主,版主会在第一时间处理。 功能:sql遍历文件夹下的文本文件名,当然你修改部分代码后可以完成各种文件的列表。 */ A 连接中执行 SET TRANSACTION ISOLATION LEVEL REPEATABLE READ begin tran select * from tablename with (rowlock) where id=3 waitfor delay '00:00:05' commit tran B连接中如果执行 update tablename set colname='10' where id=3 --则要等待5秒 update tablename set colname='10' where id <>3 --可立即执行 2 锁定数据库的一个表 SELECT * FROM table WITH (HOLDLOCK) 注意: 锁定数据库的一个表的区别 SELECT * FROM table WITH (HOLDLOCK) 其他事务可以读取表,但不能更新删除 SELECT * FROM table WITH (TABLOCKX) 其他事务不能读取表,更新和删除

mysql锁与程序锁_数据库加锁(转)相关推荐

  1. mysql锁与程序锁_sql 锁类型与锁机制

    SQL Server锁类型(SQL)收藏 1. HOLDLOCK: 在该表上保持共享锁,直到整个事务结束,而不是在语句执行完立即释放所添加的锁. 2. NOLOCK:不添加共享锁和排它锁,当这个选项生 ...

  2. mysql数据库的行级锁有几种_数据库行级锁和表锁区别

    MyISAM和InnoDB MyISAM MyISAM使用B+tree作为索引结构,叶节点存放的是数据地址. MyISAM不支持事务和外键. MyISAM是表锁,对数据库写操作时会锁住整个表,效率低. ...

  3. mysql锁与程序锁_「最美应用」应用锁:这个程序锁,不寻常...

    功能多,安全性强,这才是一款应用锁. 手机的安全性就不用小美多说了吧!谁也不希望自己的手机被任何人使用,就算是熟人,也会有不自在,尽管小美不能帮助你避开这些问题,但是小美却可以为你推荐一款超棒的应用锁 ...

  4. oracle数据库锁表很多,oracle锁表的原因_数据库

    怎么修改oracle最大连接数_数据库 修改oracle最大连接数的方法是:首先登录数据库,并查看数据库进程的连接数:接着查询当前会话的连接数:最后用[alter system set process ...

  5. mysql隔离级别 简书_数据库事务和四种隔离级别

    什么是事务 事务(Transaction):访问并可能更新数据库中各种数据项的一个程序执行单元(unit),它通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起 ...

  6. android5.1+可用的应用锁,应用锁 - 这个程序锁,不寻常... - Android 应用 - 【最美应用】...

    手机的安全性就不用小美多说了吧!谁也不希望自己的手机被任何人使用,就算是熟人,也会有不自在,尽管小美不能帮助你避开这些问题,但是小美却可以为你推荐一款超棒的应用锁,相信有了它,就算有人动了你的手机,想 ...

  7. mysql 可以承受多少人_数据库服务器能够承受的最大并发量是多少?

    一台数据库服务器能够承受多大的并发量受内外两方面因素影响. 内在因素 搞清楚需要估算的数据库服务器是什么配置: 1. 确定数据库是MySQL还是Oracle亦或是DB2.PostgreSQL等: 2. ...

  8. mysql基础小测试三_数据库---MySQL(三)

    一.视图 视图是一个虚拟表,是sql的查询结果,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据,在使用视图时动态生成.视图的数据变化会影响到基表,基表的数据变化也会影响到视图[i ...

  9. MySQL按名字查询所有信息_数据库小记:根据指定名称查询数据库表名及根据指定名称查询数据库所有表中的字段名称(支持mysql/postgre)...

    注意:本篇文章仅适用于mysql和postgre这两种数据库 1.查询数据库中所有表名及对应表的详细信息 select * from INFORMATION_SCHEMA.tables 2.根据指定名 ...

最新文章

  1. 基于以太坊的去中心化宠物商店构建教程
  2. WTM框架使用技巧之:Layui版本嫁接Vue+ElementUI
  3. python构建简单神经网络_Python构建一个简单的神经网络,Pytorch,搭建
  4. (一)源码下载,编译,安装
  5. 自学提高:JVM点滴
  6. 关于iWebOffice中使用变量插入到Office书签里面
  7. N卡驱动版本与NVCUDA驱动版本和CUDA toolkit的关系
  8. 风力摆控制系统赛题分析
  9. 工信部发布2015年中国软件业务收入百强发展报告(zz)
  10. 常见蓝屏代码解释及解决方法
  11. 2021.07.28
  12. python3-排名
  13. stm32 设置systick中断抢先式优先级
  14. Word2016替换文字方法
  15. linux挂nas盘步骤,linux下需要将nas盘挂
  16. matlab极性电容叫什么,电解电容与无极性电容之间的区别是什么
  17. 【经典题目——排序】1、数组元素编号
  18. linux之mini2440内核移植
  19. 医院信息系统基本功能规范(4)
  20. PyGame游戏制作: 弹球游戏Pong(附上Python完整代码)

热门文章

  1. 密度聚类(Density peaks Clustering)Python实现
  2. C++智能指针及其简单实现
  3. Python绘图 二维、三维
  4. python控制台输出颜色
  5. couldn't find native method
  6. 【9】青龙面板系列教程之互助规则的配置
  7. 什么是视频会议?什么是H.323?SIP是什么协议?
  8. Qos和区分服务(DiffServ)
  9. 64位oracle客户端_开发小记-golang连接Oracle数据库配置
  10. android自定义数组,如何在android中的自定义采用者中使用json数组列表?