事物为什么不能回滚??

OldEagle33032 2008-07-16 03:28:42
DECLARE @PID int


begin tran
INSERT INTO LTCY_QualityFeedBack
(operatorID, Content, OrderID, title, Operatordate)
VALUES (105, '', 1777, '', '2008-7-16 15:02:45')
SET @PID = @@identity
INSERT
INTO LTCY_QualityFeedBackDetail(PID, QualityQuestionID, ClothesID, amount,
memo)
VALUES (@PID, 5, 648, 1, '2')
INSERT
INTO LTCY_QualityFeedBackDetail(PID, QualityQuestionID, ClothesID, amount,
memo)
VALUES (@PID, 7, 6528888888888888888, 3, '4')
rollback tran
commit tran
select @@error+100
if @@error<>0

rollback tran Tran1


最后一条记录没被插入,前二条被插入了,应当要回滚才对也就是都不要插入呀
...全文
182 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
whoami333 2008-07-17
  • 打赏
  • 举报
回复
rollback tran;
return;

不知道这样行不。
发表于 2008-07-17
  • 打赏
  • 举报
回复
UP
wptad 2008-07-17
  • 打赏
  • 举报
回复
事务回滚是需要条件的
CityOfAngels 2008-07-17
  • 打赏
  • 举报
回复
up
slimfeng 2008-07-17
  • 打赏
  • 举报
回复
弄清事务的概念很重要。
云海ldj 2008-07-16
  • 打赏
  • 举报
回复
BEGIN Tran
执行一条SQL语句
IF @@error <>0
BEGIN
ROLLBACK TRAN
RETURN
END
执行一条SQL语句
IF @@error <>0
BEGIN
ROLLBACK TRAN
RETURN
END
.....
Commit Tran
万小萌 2008-07-16
  • 打赏
  • 举报
回复
楼主没搞清楚sql事务!
yagebu1983 2008-07-16
  • 打赏
  • 举报
回复
出现错误后,回滚事务!!!
wangchao1982 2008-07-16
  • 打赏
  • 举报
回复
用事务,必然会加上try catch,否则你怎么知道什么时候commit什么时候rollback?
rollback tran
commit tran
放在一起,很无语啊
standy 2008-07-16
  • 打赏
  • 举报
回复

BEGIN Tran
OTHER SQL
IF @@error<>0
BEGIN
ROLLBACK TRAN
RETURN
END
Commit Tran



缺少了判断报错才回滚的机制
whycom 2008-07-16
  • 打赏
  • 举报
回复
DECLARE @PID int


begin tran
INSERT INTO LTCY_QualityFeedBack
(operatorID, Content, OrderID, title, Operatordate)
VALUES (105, '', 1777, '', '2008-7-16 15:02:45')
SET @PID = @@identity
INSERT
INTO LTCY_QualityFeedBackDetail(PID, QualityQuestionID, ClothesID, amount,
memo)
VALUES (@PID, 5, 648, 1, '2')
INSERT
INTO LTCY_QualityFeedBackDetail(PID, QualityQuestionID, ClothesID, amount,
memo)
VALUES (@PID, 7, 6528888888888888888, 3, '4')
rollback tran
commit tran
select @@error+100
if @@error <>0
rollback tran Tran1
else
commit ....
aaajedll 2008-07-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 gordon_two 的回复:]
在每条语句后判断@ERROR,然后如果 <>0使用goto语句到rollback tran,在最后的插入语句判断@error,如果=0 goto到commit tran
[/Quote]
gordon_two 2008-07-16
  • 打赏
  • 举报
回复
在每条语句后判断@ERROR,然后如果<>0使用goto语句到rollback tran,在最后的插入语句判断@error,如果=0 goto到commit tran
OldEagle33032 2008-07-16
  • 打赏
  • 举报
回复
DECLARE @PID int


begin tran
INSERT INTO LTCY_QualityFeedBack
(operatorID, Content, OrderID, title, Operatordate)
VALUES (105, '', 1777, '', '2008-7-16 15:02:45')
SET @PID = @@identity
INSERT
INTO LTCY_QualityFeedBackDetail(PID, QualityQuestionID, ClothesID, amount,
memo)
VALUES (@PID, 5, 648, 1, '2')
INSERT
INTO LTCY_QualityFeedBackDetail(PID, QualityQuestionID, ClothesID, amount,
memo)
VALUES (@PID, 7, 6528888888888888888, 3, '4')
commit tran
select @@error+100
if @@error <>0

rollback tran Tran1
OldEagle33032 2008-07-16
  • 打赏
  • 举报
回复
rollback tran 这个是没有放上去的
HolyPlace 2008-07-16
  • 打赏
  • 举报
回复
rollback tran
commit tran
这两个是不能放在一起的吧!
whoami333 2008-07-16
  • 打赏
  • 举报
回复
关注下。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧