sql 数据 加锁 解锁
当我编辑某行数据的时候
先执行 select 并锁定该行不能被查询 修改
更新完成 update 该行 解锁
怎么实现啊···· sql 加锁 解锁 事务
[解决办法]
会话1:
begin tran
select * from tb with(xlock) where id = 1
update tb
set col = 1
where id = 1
commit tran
回话2:
select * from tb with(xlock) where id = 1
就会被锁住,查询不到东西
[解决办法]
编辑和真正的“更新”不应该放在一起吧,如果在编辑时锁住,然后你跑去泡妞了,那整个系统都给你堵住了,根据国外大牛paul的某本书,一般应该在真正更新的时候检查数据是否满足更新条件,然后更新,这个过程中加锁,加锁的行为不要等待用户响应
[解决办法]
提升事务隔离等级到serializable
set transaction isolation level serializable