MS SQL Server 两种方式 实现事务
1、自动模式
CREATE PROC P_TranTest1
AS
BEGIN
SET XACT_ABORT ON--开启自动回滚
BEGIN TRAN
INSERT INTO T_Product(CId,PName) values(1,'产品一')--正常
INSERT INTO T_Product(CId,PName) VALUES(6,'产品而')--6外键冲突
COMMIT TRAN
END
优点:写法简单
缺点:耗费性能
2、手动方式
CREATE PROC P_TranTest
AS
BEGIN
DECLARE @ErrorCode int
BEGIN TRAN
INSERT INTO T_Product(CId,PName) values(1,'产品一')--正常
INSERT INTO T_Product(CId,PName) VALUES(6,'产品而')--6外键冲突
SELECT @ErrorCode=@@ERROR
IF @ErrorCode<>0
BEGIN
ROLLBACK TRAN
END
ELSE
BEGIN
COMMIT TRAN
END
END
优点:性能较好
缺点:写法比较复杂