| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3633 人关注过本帖
标题:[求助]事务回滚保存点的问题
只看楼主 加入收藏
冰封情愁
Rank: 1
等 级:新手上路
威 望:1
帖 子:32
专家分:0
注 册:2006-12-7
收藏
得分:0 
参考一下,如果有错,还请高手们指点.


begin transaction tran_sincky
。。。
save tran save_sincky /*设置保存点*/
。。。
if @@rowcount!=100
begin
print '100行数据生成失败'
rollback tran save_sincky /*回滚到事务开始, 当设置成rollback tran save_sincky 执行失败*/
end
else
begin
print '100行数据生成成功'
end
commit tran tran_sincky

2007-03-27 23:54
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
冰封情愁
Rank: 1
等 级:新手上路
威 望:1
帖 子:32
专家分:0
注 册:2006-12-7
收藏
得分:0 
楼上的,对这段语句我有点不明白,
begin
rollback tran save_transaction /*回滚到事务保存点*/
commit save_transaction
end
其中的 commit save_transaction 语句会会被执行的?
如果楼主调试过,而且可以执行的话,麻烦回个话!!!

2007-03-30 12:28
dai77848400
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2008-6-20
收藏
得分:0 
我明白了  你后面那个IF ELSE 里面的多是一个复合语句 如果错误你回到用SAVE保存的地方  else 后面的语句就不回执行 你只要把那个ELSE 去了 他就会按顺序执行下面的语句 他几不回报错的
2008-06-29 15:55
dai77848400
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2008-6-20
收藏
得分:0 
我明白了  你后面那个IF ELSE 里面的多是一个复合语句 如果错误你回到用SAVE保存的地方  else 后面的语句就不回执行 你只要把那个ELSE 去了 他就会按顺序执行下面的语句 他几不回报错的

不要意思
上面的话还是有的点错误,你只要把那个COMMIT TRAN写到ELSE 外就OK了  我调试了 可以
2008-06-29 16:16
xrbbs
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-9-1
收藏
得分:0 
create procedure sinckypro
as
declare @i int,@j int
set @i=1
set @j=0
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
set @j=@j+@@rowcount
print @@rowcount
end
select * from sinckytab
if @j!=101
begin
print @j
print '100行数据生成失败'
rollback tran save_sincky /*回滚到事务开始, 当设置成rollback tran save_sincky 执行失败*/
end
else
begin
print '100行数据生成成功'
commit tran tran_sincky
end

exec sinckypro

上面是我帮你改的,可以运行了
@@rowcount返回受上一语句影响的行数 每一次都返回1不会返回所有影响的行数
2008-09-01 15:50
bb3852
Rank: 1
等 级:新手上路
帖 子:82
专家分:0
注 册:2008-4-21
收藏
得分:0 
rollback后面加
commit tran save_sincky就可以了

http://hi.baidu.com/bb3852
数据库开发有兴趣的朋友们,里面有很多原创代码
qq:184882759
2008-09-02 13:57
快速回复:[求助]事务回滚保存点的问题
数据加载中...
 
   



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

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