SQL server 事务实例

 简单的SQLserver事务实例:

执行SQL 组合操作A、操作B,只有AB都执行成功时才提交事务,否则回滚事务。

 测试数据表:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

--1.数据表A

CREATE TABLE A(

A1 VARCHAR(10)

,A2 VARCHAR(10)

);

INSERT INTO A(A1,A2) VALUES ('00001','soulsjie');

 

--2.数据表B

CREATE TABLE B(

B1 VARCHAR(10)

,B2 VARCHAR(100)

);

INSERT INTO B(B1,B2) VALUES ('6666','b0001');

INSERT INTO B(B1,B2) VALUES ('666','b0002');

 

 事务实例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

--SQL server事务

BEGIN TRAN UpdateAandB --创建事务

    DECLARE @AJIEGUO INT ,@BJIEGUO INT

    UPDATE SET A1='12345678910'--操作A

    SET @AJIEGUO=@@ERROR;          --操作A的执行状态码,0表示执行成功

 

    UPDATE SET B2='soulsjieT'    --操作B

    SET @BJIEGUO=@@ERROR;          --操作B的执行状态码,0表示执行成功

    PRINT @BJIEGUO;

 

    IF(@AJIEGUO+@BJIEGUO=0)        --只有操作A、操作B都成功执行时才提交事务

        COMMIT TRAN UpdateAandB;

    ELSE

        ROLLBACK  TRAN UpdateAandB;--操作A或操作B有任何一个执行失败时回滚事务

 

/*创建事务的目的:用户在对数据进行操作时,

  被修改的数据只是被暂存在缓冲区中,

  只有被提交之后其他用户才能访问这部分数据*/

--创建事务,当前用户对数据的修改操作

--执行增、删、改数据的操作时,需要提交事务该部分数据才能生效被其他用户使用

UPDATE STU_INFO S SET S.STU_SEX='女' WHERE S.STU_ID='180301';

UPDATE STU_INFO S SET S.STU_SEX='男' WHERE S.STU_ID='180302';

DELETE FROM STU_INFO S WHERE S.STU_ID='180301';

INSERT INTO STU_INFO (STU_ID,STU_NAME,STU_CLASS,STU_SEX) VALUES('180307','甜甜','3','女');

--回滚事务

ROLLBACK;

--提交事务

COMMIT;

 

--创建事务的回滚点

SAVEPOINT OP1;--创建还原点

UPDATE STU_INFO S SET S.STU_NAME='操作一。数据被修改了' WHERE S.STU_ID='180301';

SAVEPOINT OP2;

UPDATE STU_INFO S SET S.STU_NAME='操作二。数据被修改了' WHERE S.STU_ID='180302';

SAVEPOINT OP3;

UPDATE STU_INFO S SET S.STU_NAME='操作三。数据被修改了' WHERE S.STU_ID='180303';

--回滚到OP1时所有被修改的数据都还原了

ROLLBACK TO OP1;

--回滚到OP2时数据1被修改,数据2/3还原

ROLLBACK TO OP2;

--回滚到OP3时数据1/2被修改,数据3还原

ROLLBACK TO OP3;

 

COMMIT;--提交事务

--注意:隐式提交,用户的影响表结构的行为发生时,系统默认直接提交事务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值