事务

来源:互联网 发布:cad签名制作软件 编辑:程序博客网 时间:2024/04/29 18:57

--建表

drop table table1
create table table1(a int identity(1,1) primary key,
     b int,
     c nvarchar(8))


--放数据

set identity_insert table1on
declare @i int
set @i=1
while(@i<10)
begin
insert into table1(b,c) values(@i,@i)
set @i = @i+1
end

--事务

DECLARE @I INT
BEGIN TRANSACTION T1
SAVE TRANSACTION STEP1 --正确的STEP
INSERT INTO TABLE1(B,C) VALUES(1,'STEP1')
IF @@ERROR<>0
BEGIN
ROLLBACK TRANSACTION STEP1
INSERT INTO TABLE1(B,C) VALUES(1,'ERRSTEP1')
END
SAVE TRANSACTION STEP2 --错误的STEP
INSERT INTO TABLE1(A,B,C) VALUES(1,1,'STEP2')
SET @I=@@ERROR
IF @I<>0  --此处@I换成@@ERROR则INSERT INTO TABLE1(B,C) VALUES(1,'ERRSTEP2')不执行
BEGIN
ROLLBACK TRANSACTION STEP2
INSERT INTO TABLE1(B,C) VALUES(1,'ERRSTEP2')
END
COMMIT TRANSACTION T1
SELECT * FROM TABLE1
SELECT @I

原创粉丝点击