日期:2014-05-18 浏览次数:20852 次
1 如何锁一个表的某一行 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) 其他事务不能读取表,更新和删除
------解决方案--------------------
人家说不能,那就是不能,锁是人家造的!
------解决方案--------------------
--Create table autoNum(ID int identity primary key,number int) insert autoNum select 10 insert autoNum select 20 insert autoNum select 30 --窗口1 begin tran DELETE FROM autoNum WITH (rowlock,holdlock) where ID=1 --窗口2 begin tran update autoNum WITH (rowlock,holdlock) set number=number+100 where ID=2
------解决方案--------------------
问题:
1、mssql2000k 环境是,delete from 不能使用READPAST锁?
--> 这是规定, 没什么好解释的哦.
2、在sql查询分析器如何运行存贮过程(返回一个参数)
--> sql2000没有output参数,试试把结果select出来即可.
------解决方案--------------------
补充: 不确定sql2000是否有output参数,试试咯.