CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  疑难问题

MS-SQLServer ,如何锁定一行记录,使其它事务可读不可修改?

楼主gpg(snake)2003-04-02 13:50:02 在 MS-SQL Server / 疑难问题 提问

我用了TABLOCKX   ,其它事务整个表都不能读了。  
  用ROWLOCK,其它事务还可以修改。 问题点数:100、回复次数:7Top

1 楼tj_dns(愉快的登山者)回复于 2003-04-02 18:11:47 得分 15

SET   TRANSACTION   ISOLATION   LEVEL   READ   UNCOMMITTED  
  select   *   from   table   rowlock   where   id   =   ..Top

2 楼caiyunxia(夏才云)回复于 2003-04-02 20:07:27 得分 15

用上述方法,当同时操作时,会提示错误Top

3 楼CDINnet(CDIN.Net)回复于 2003-04-03 09:50:06 得分 10

也可以在记录后加个操作标记:如字段Locked,Bit类型  
   
  修改记录时将需要锁定的记录的Locked置为1,  
   
  释放时,再置回0,也很方便Top

4 楼caiyunxia(夏才云)回复于 2003-04-03 09:53:08 得分 20

SET   TRANSACTION   ISOLATION   LEVEL  
          {   READ   COMMITTED  
                  |   READ   UNCOMMITTED  
                  |   REPEATABLE   READ  
                  |   SERIALIZABLE    
          }  
   
  参数  
  READ   COMMITTED  
   
  指定在读取数据时控制共享锁以避免脏读,但数据可在事务结束前更改,从而产生不可重复读取或幻像数据。该选项是   SQL   Server   的默认值。  
   
  READ   UNCOMMITTED  
   
  执行脏读或   0   级隔离锁定,这表示不发出共享锁,也不接受排它锁。当设置该选项时,可以对数据执行未提交读或脏读;在事务结束前可以更改数据内的数值,行也可以出现在数据集中或从数据集消失。该选项的作用与在事务内所有语句中的所有表上设置   NOLOCK   相同。这是四个隔离级别中限制最小的级别。  
   
  REPEATABLE   READ  
   
  锁定查询中使用的所有数据以防止其他用户更新数据,但是其他用户可以将新的幻像行插入数据集,且幻像行包括在当前事务的后续读取中。因为并发低于默认隔离级别,所以应只在必要时才使用该选项。  
   
  SERIALIZABLE  
   
  在数据集上放置一个范围锁,以防止其他用户在事务完成之前更新数据集或将行插入数据集内。这是四个隔离级别中限制最大的级别。因为并发级别较低,所以应只在必要时才使用该选项。该选项的作用与在事务内所有   SELECT   语句中的所有表上设置   HOLDLOCK   相同。  
   
  Top

5 楼Ibangbang(梆梆)回复于 2003-04-03 09:59:08 得分 20

楼上正解,提高事务的隔离级别,不过在性能有损失Top

6 楼gpg(snake)回复于 2003-04-03 10:53:06 得分 0

加个操作标记:如字段Locked,Bit类型  
   
  修改记录时将需要锁定的记录的Locked置为1,  
  是不行的,  
  在不可预知的情况下没释放掉怎么办.Top

7 楼yun521(yun521)回复于 2003-04-03 17:17:46 得分 20

SET   TRANSACTION   ISOLATION   LEVEL   READ   UNCOMMITTEDTop

相关问题

  • 请教sqlserver事务问题
  • 怎样删除SQLServer的事务日志
  • 关于SQLServer的事务处理。
  • sqlserver 2000 中的事务处理
  • jdbc事务问题 数据库sqlserver
  • jdbc处理sqlserver事务问题
  • MS-sql事务处理的问题
  • 有没有办法在mssql存储过程中锁定一行,事务也只基于这一行而不是整个表.
  • 问一下SQLServer跨网络事务复制的问题
  • 如何正确的使用SQLServer的事务日志

关键词

  • 数据
  • 修改
  • 选项
  • 用户
  • 事务
  • 锁定
  • 记录
  • 级别
  • 幻像
  • 隔离

得分解答快速导航

  • 帖主:gpg
  • tj_dns
  • caiyunxia
  • CDINnet
  • caiyunxia
  • Ibangbang
  • yun521

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo