一个方法里有多个delete *** 作如果其中一个异常,会怎么回滚

一个方法里有多个delete *** 作如果其中一个异常,会怎么回滚,第1张

1、事务回滚单库的回滚比较简单,分布式数据库,回滚则要使用分布式事务。

2、见分布式事务笔记,底层实现如2PC,3PC长时间阻塞会影响性能。回滚计算机术语,指的是程序或数据处理错误,将程序或数据恢复到上一次正确状态的行为。

CREATE PROC [dbo].[notice_Delete] --- 同时删除该通知书和对应的节点

@tbl VARCHAR(30),

@pid INT

AS

BEGIN

DECLARE @tblname VARCHAR(30)

DECLARE @sql VARCHAR(1000)

SET @tblname = @tbl

SET @sql = 'delete ' + @tblname + ' where id ='

+ CONVERT(VARCHAR(10), @pid)

BEGIN TRAN --开始事务

EXEC ( @sql

)

IF ( @@rowcount = 0 ) --执行结果影响行数为0

BEGIN

ROLLBACK TRAN --回滚

END

ELSE

BEGIN

DELETE FROM tbl_treenotice

WHERE purposeid = @pid

IF ( @@rowcount = 0 ) --执行结果影响行数为0

BEGIN

ROLLBACK TRAN --回滚

END

ELSE

BEGIN

COMMIT TRAN --提交事务

END

END

END

不是你怎么写的。

首先,你要理解事务的概念。

commit、rollback是在事务处理中,提交、回滚的命令。

其次,你的编辑器,要设置成:不是自动提交数据。

比如:

delect from tabname

此时,如果想提及,则执行:

commit

如果想回滚:

rollback

如果你设置的是 自动提交。

那么你在执行delete后,就自动commit了,也就不能rollback了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9878509.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存