日期:2014-05-19  浏览次数:20639 次

sql边取边存问题 ,袁峰老大请进
我有一个数据表,我要用程序一边取这表的数,还有一个程序往这个表里面写数.我写一个存储存过程,先把这个表的数据全部取出来然后再全部清掉,在这期间有没有可能另一个程序把数据给写进来呀.就是我在取完数以后删除以前,会不会有数据写进来呀.大家给说明一下吧

------解决方案--------------------
在游标定义中,普通的定义方法为:
DECLARE authors_cursor CURSOR FOR SELECT au_id, au_fname, au_lname FROM authors
这时,只能浏览或取表中的值,将语句改为:
DECLARE authors_cursor CURSOR FOR SELECT au_id, au_fname, au_lname FROM authors
For Update
也就是在原语句的后面增加For Update 就可以了


------解决方案--------------------
--try

begin tran
declare @i1 int, @i2 int
select * from xzt
set @i1=@@rowcount

delete from xzt
set @i2=@@rowcount

if @i1=@i2
commit tran
else
rollback tran
------解决方案--------------------
楼主是想保证select 和 delete 之间, 没有数据被修改而已, 还是连新增的符合条件的数据也不允许?

如果是前者, 将事务隔离级别提高到: REPEATABLE READ
如果是后者, 则事务隔离级别必须提供到: SERIALIZABLE
------解决方案--------------------
跟着老大的脚步前进
------解决方案--------------------
study
------解决方案--------------------
向老大学xi~
------解决方案--------------------
这么多钻呀,佩服老大
------解决方案--------------------
学习!
------解决方案--------------------
SET TRANSACTION ISOLATION LEVEL
--REPEATABLE READ
SERIALIZABLE

请问这句话是什么意思??

------解决方案--------------------
向老大学xi~
------解决方案--------------------
向前进向前进~`
------解决方案--------------------
sql边取边存问题 ,袁峰老大请进
--------------
呵呵,这里是邹老大的地盘~~~
------解决方案--------------------
mark