请问触发器中事务怎么写???

Lostinet 2002-08-22 05:39:09
现在触发器是这样的:

BEGIN

语句1

语句2

语句3

END

我希望整个结构完整,要求任何一语句出问题后取消整个事务,
包括引发这个触发器的外部语句。。。一直退到应用程序上(ADO)

那么在这里,我应该怎样写??/

...全文
37 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lostinet 2002-08-23
  • 打赏
  • 举报
回复
那么在事务中?
Lostinet 2002-08-23
  • 打赏
  • 举报
回复
在哪里?
Lostinet 2002-08-23
  • 打赏
  • 举报
回复
如果事务是嵌套的呢?
那么是不是这样:?

Rollback Transaction T2
Rollback Transaction T1
Rollback Transaction --把调用者的事务取消了?

Yang_ 2002-08-23
  • 打赏
  • 举报
回复
Begin Transaction T1 ---这个T1是事务名,以后提交或者回滚的时候可以使用这个名称

看看帮助吧!
Lostinet 2002-08-23
  • 打赏
  • 举报
回复
。。不懂。。~~~~~
Yang_ 2002-08-23
  • 打赏
  • 举报
回复
上面写错了:

如果是在存储过程,可以用命名事务:
^^^
Yang_ 2002-08-22
  • 打赏
  • 举报
回复
如果是在存储过程,可以用明明事务:

Begin
Begin Transaction T1
--第一类操作N条语句
If @@Error<>0
Begin
Rollback Transaction T1
Begin Transaction T2
--第二类操作N条语句
If @@Error<>0
Begin
--都不成功
Rollback Transaction T2
Raiserror('两个操作都不成功',18,1)
RETURN
End
Else
Begin
--第二类操作成功
Commit Transaction T2
RETURN
End
End
Else
Begin
--第一类操作成功
Commit Transaction T1
RETURN
End

End
mmzxg 2002-08-22
  • 打赏
  • 举报
回复
思考中。。。。。。。。。
Lostinet 2002-08-22
  • 打赏
  • 举报
回复
事实上我不知道TRANSACTION的行为。。
我只想实现我想做的。。
Lostinet 2002-08-22
  • 打赏
  • 举报
回复
我的想法是这样的:
我的想法是这样的:

Begin
Begin Transaction
--第一类操作N条语句
If @@Error<>0
Begin
Rollback Transaction
Begin Transaction
--第二类操作N条语句
If @@Error<>0
Begin
--都不成功
Rollback Transaction
Raiserror('两个操作都不成功',18,1)
RETURN
End
Else
Begin
--第二类操作成功
Commit Transaction
RETURN
End
End
Else
Begin
--第一类操作成功
Commit Transaction
RETURN
End

End
Yang_ 2002-08-22
  • 打赏
  • 举报
回复
好多错误是没有等到执行IF @ERROE<>0就出错了,比如主键冲突。
所以你的想法可以试一下,但不能保证能成功。

BEGIN

语句1
if @@error=0
begin
return 成功了,退出
end
语句2
if @@error=0
begin
return 成功了,退出
end
语句3
if @@error=0
begin
return 成功了,退出
end
Lostinet 2002-08-22
  • 打赏
  • 举报
回复
我希望里面进行两条自己定义的事务。
如果第一条走不通,那么回滚,然后尝试第二条。
如果都不行,那么整个触发器回滚事务。。

这怎么做??



我希望里面进行两条自己定义的事务。
如果第一条走不通,那么回滚,然后尝试第二条。
如果都不行,那么整个触发器回滚事务。。

这怎么做??



我希望里面进行两条自己定义的事务。
如果第一条走不通,那么回滚,然后尝试第二条。
如果都不行,那么整个触发器回滚事务。。

这怎么做??



我希望里面进行两条自己定义的事务。
如果第一条走不通,那么回滚,然后尝试第二条。
如果都不行,那么整个触发器回滚事务。。

这怎么做??



我希望里面进行两条自己定义的事务。
如果第一条走不通,那么回滚,然后尝试第二条。
如果都不行,那么整个触发器回滚事务。。

这怎么做??



我希望里面进行两条自己定义的事务。
如果第一条走不通,那么回滚,然后尝试第二条。
如果都不行,那么整个触发器回滚事务。。

这怎么做??



我希望里面进行两条自己定义的事务。
如果第一条走不通,那么回滚,然后尝试第二条。
如果都不行,那么整个触发器回滚事务。。

这怎么做??



我希望里面进行两条自己定义的事务。
如果第一条走不通,那么回滚,然后尝试第二条。
如果都不行,那么整个触发器回滚事务。。

这怎么做??



caiyunxia 2002-08-22
  • 打赏
  • 举报
回复
好象不需要,我测试了,YANG-说的没错,有问题,都不会执行
Lostinet 2002-08-22
  • 打赏
  • 举报
回复
我希望里面进行两条自己定义的事务。
如果第一条走不通,那么回滚,然后尝试第二条。
如果都不行,那么整个触发器回滚事务。。

这怎么做??
Lostinet 2002-08-22
  • 打赏
  • 举报
回复
如果我在语句1前启动一个触发器呢?应该怎样写?注意点什么?
cyberwizard 2002-08-22
  • 打赏
  • 举报
回复
Yang_(扬帆破浪) 是高手....说的你就信了吧,没错!
ItSeeker 2002-08-22
  • 打赏
  • 举报
回复
If @@error<>0 ROLLBACK TRANSACTION
Yang_ 2002-08-22
  • 打赏
  • 举报
回复
触发器本身是包含在外部语句的事务里的,所以可以不必处理,万一出错的时候会自动会滚所有语句。

或者你这样写:

BEGIN

语句1
if @@error<>0
begin
ROLLBACK TRANSACTION
return
end
语句2
if @@error<>0
begin
ROLLBACK TRANSACTION
return
end
语句3
if @@error<>0
begin
ROLLBACK TRANSACTION
return
end
END

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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