日期:2014-05-18  浏览次数:20821 次

c# 回滚 sql存储过程回滚哪个好
c# 回滚 sql存储过程回滚哪个好,现在在网络不太好或其它未知情况下,在SQL存储过程里加的set xact_abort on 回滚没用,一个过程里先插入,后更新,往往出现插入了但是没有更新。


所以想问到底是要写在代码里?还是存储过程写的有问题。

代码里是FOR 循环 提交的数据。

------解决方案--------------------
这种解决方案有很多重复的处理,特别是如果你的业务逻辑需要2个以上的T-SQL语句时。比较优雅的解决方案是组合所有的代码,使用一个通用的错误处理。

CREATE PROCEDURE addTitle(@title_id VARCHAR(6), @au_id VARCHAR(11),
@title VARCHAR(20), @title_type CHAR(12))
AS
 
BEGIN TRAN
INSERT titles(title_id, title, type)
VALUES (@title_id, @title, @title_type)
 
IF (@@ERROR <> 0) BEGIN
PRINT 'Unexpected error occurred!'
ROLLBACK TRAN
RETURN 1
END
 
INSERT titleauthor(au_id, title_id)
VALUES (@au_id, @title_id)
 
IF (@@ERROR <> 0) BEGIN
PRINT 'Unexpected error occurred!'
ROLLBACK TRAN
RETURN 1
END
 
COMMIT TRAN
 
RETURN 0