首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql 数据 加锁 解锁解决思路

2013-12-05 
sql数据 加锁 解锁当我编辑某行数据的时候先执行 select并锁定该行不能被查询 修改更新完成update 该行解

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

[解决办法]
引用:
提升事务隔离等级到serializable

 set transaction isolation level serializable

这个级别高了一点,重复读的级别就可以满足了。
[解决办法]
引用:
比如说:
一个考试系统
学生的答卷1 由老师A 在批阅
那么答卷1  就应该处于批阅状态  这时候应该得 锁住它吧不让查询或修改
等批阅完成  解锁


哦,那应该增加一个字段比如,status 为1表示在审批,而0表示解锁,在查询时:

select *
from tt
where status = 0

也就是只能查询解锁的
[解决办法]
楼主题目真拗口啊。

你要加锁因为是在编辑某行数据的时候,在编辑的时候,数据库会自动对表格,或者行数据加锁的,你不用再使用select ... with(xlock)再来加锁,多此一举。

7楼是正确答案。

热点排行