一个表中只有一条记录,这条记录同时会被多人更新,如何使这条记录同时被多人更新时数据不会出错?
使用事务能否实现?
如果A B两人同时更新这条记录,A使用事务更新,B没用事物,请问是否数据更新时会出错(不一致)?

解决方案 »

  1.   

    1:不需要使用事务, SQL SERVER 默认的隔离级别会自动加锁
    2:不会
      

  2.   

    1 如何锁一个表的某一行
    /*
            测试环境:windows 2K server + Mssql 2000
            所有功能都进行测试过,并有相应的结果集,如果有什么疑义在论坛跟帖
            关于版权的说明:部分资料来自互联网,如有不当请联系版主,版主会在第一时间处理。
            功能:sql遍历文件夹下的文本文件名,当然你修改部分代码后可以完成各种文件的列表。
    */
    A 连接中执行SET TRANSACTION ISOLATION LEVEL REPEATABLE READbegin transelect * from tablename with (rowlock) where id=3waitfor delay '00:00:05'commit tranB连接中如果执行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) 
    其他事务不能读取表,更新和删除
      

  3.   


    在表名后面加上排它锁 with (tablockx)例如:select * from sysobjects with (tablockx)
      

  4.   

    星辰技术社区:www.netcsharp.cn,我们将帮您以最快的速度找到最佳的解决方案