读书人

c# 回滚 sql存储过程回滚哪个好,该怎么

发布时间: 2012-04-08 14:38:30 作者: rapoo

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

读书人网 >C#

热点推荐