标题:[求助]事务回滚保存点的问题
取消只看楼主
flmls
Rank: 1
等 级:新手上路
帖 子:64
专家分:0
注 册:2007-2-6
 问题点数:0 回复次数:6 
[求助]事务回滚保存点的问题

create procedure sinckypro
as
declare @i int
set @i=1
begin transaction tran_sincky
create table sinckytab(
myid int not null,
myname varchar(10),
mtdesc varchar(50))
save tran save_sincky /*设置保存点*/
while @i<=101
begin
insert into sinckytab values(@i,'sincky','come from 51testing')
set @i=@i+1
end
select * from sinckytab
if @@rowcount!=100
begin
print '100行数据生成失败'
rollback tran tran_sincky /*回滚到事务开始, 当设置成rollback tran save_sincky 执行失败*/
end
else
begin
print '100行数据生成成功'
commit tran tran_sincky
end

exec sinckypro

有个问题:
我是设置101次循环,把事务回滚设置成事务开始rollback tran tran_sincky,执行语句,显示“100行数据生成失败”
当我把回滚语句设置成rollback tran save_sincky时候,执行失败
错误提示是:EXECUTE 后的事务计数指出缺少了 COMMIT 或 ROLLBACK TRANSACTION 语句。

搜索更多相关主题的帖子: 事务 sincky tran begin int 
2007-03-21 20:24
flmls
Rank: 1
等 级:新手上路
帖 子:64
专家分:0
注 册:2007-2-6
得分:0 

是不是,还需要编写语句
rollback tran save_sincky(对应的rollbaek是不是还要返回到save_sincky吗)
commit tran save_sincky

2007-03-22 00:34
flmls
Rank: 1
等 级:新手上路
帖 子:64
专家分:0
注 册:2007-2-6
得分:0 

明白点了,应该对save_sincky有个对应的commit rollback
但不知道加那里
应该怎么改下啊,求解

2007-03-23 13:40
flmls
Rank: 1
等 级:新手上路
帖 子:64
专家分:0
注 册:2007-2-6
得分:0 
egin transaction tran_sincky
。。。
save tran save_sincky /*设置保存点*/
。。。
if @@rowcount!=100
begin
print '100行数据生成失败'
rollback tran save_sincky /*回滚到事务开始, 当设置成rollback tran save_sincky 执行失败*/
commit tran save_sincky

end
else
begin
print '100行数据生成成功'
commit tran tran_sincky
end

是不是加一句“commit tran save_sincky”,请指教
2007-03-26 21:38
flmls
Rank: 1
等 级:新手上路
帖 子:64
专家分:0
注 册:2007-2-6
得分:0 
还是不是很明白,
当 print '100行数据生成失败'
rollback tran tran_sincky

语句回滚到 保存点tran_sincky后,效果应该是,事务回滚,保存点前面建立表的语句成功执行,而保存点后的语句取消

为什么,总是错误呢
2007-03-26 22:46
flmls
Rank: 1
等 级:新手上路
帖 子:64
专家分:0
注 册:2007-2-6
得分:0 
斑竹,是不是不能执行这个效果?
2007-03-26 22:52
flmls
Rank: 1
等 级:新手上路
帖 子:64
专家分:0
注 册:2007-2-6
得分:0 

楼上的我执行过了,好象也不行

我这个应该对了吧
begin tran begin_transaction
...
save tran save_transaction /*设置保存点*/
...
if (...)
begin
commit tran begin_transaction
end
else
begin
rollback tran save_transaction /*回滚到事务保存点*/
commit save_transaction
end

这下对了吧,斑竹.

2007-03-30 00:14



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-125704-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.351175 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved