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

怎么在存储过程中锁定表

2013-10-11 
如何在存储过程中锁定表在一个存储过程中有这样一段代码truncate table tmpTableinsert into tmpTable() s

如何在存储过程中锁定表
在一个存储过程中有这样一段代码
truncate table tmpTable
insert into tmpTable() select * from .....

另一个存储过程会访问这个tmpTable表,所以必须要保证前面这两个语句都执行完,才能访问这个表,不然就可能造成读取不到任何数据了。
[解决办法]
默认隔离级别就会锁住,没必要做什么限制啊
[解决办法]
在sql server中一条语句就是一个事务,如果你想要每次读数据,都能读到数据,那么必须在原来的存储过程中使用显式事务:

/*
在一个存储过程中有这样一段代码
truncate table tmpTable
insert into tmpTable() select * from .....
*/

--把上面的存储过程的代码改为
begin tran
truncate table tmpTable

insert into tmpTable() select * from .....
commit tran


然后在其他存储过程中要读取tmpTable的数据时,如果正在truncate table和insert 数据,那么你的存储过程会把阻塞住,知道commit事务后,就能读取到数据了。

热点排行