如何在存储过程中锁定表
在一个存储过程中有这样一段代码
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