事务
2017-12-08 本文已影响0人
一江碎月
保证一组操作不会中途停止,要不全部执行完毕,要不都不执行。
-
保留点:事务处理中设置的临时点,可以回退到指定的保留点。
-
事务只能回退 INSERT , DELETE 与 UPDATE 语句,不能对SELECT进行回退
—— 也没啥必要,因为查询并不会改变表中的数据。 -
事务中可以写 CREATE 或 DROP,但回退时这些操作并不撤销。
开始与提交
关键字 BEGIN TRANSACTION 与 COMMIT TRANSACTION 完成。
通过 BEGIN 开始,通过 COMMIT 将整个事务提交。
BEGIN TRANSACTION;
UPDATE OrdersCopy SET order_num="3423424";
COMMIT TRANSACTION;
回退
通过 SAVEPOINT 设置保留点,ROLLBACK TO 回退到指定的保留点。
然后通过 ROLLBACK 回退到指定的保留点,并通过 COMMIT TRANSACTION将保留点之间的操作提交。
BEGIN TRANSACTION;
UPDATE OC SET order_num="2223332";
SAVEPOINT update1; -- 指定保留点
UPDATE OC SET cust_id="11111";
SAVEPOINT update2;
ROLLBACK TO update1; -- 回退到指定的保留点,并将保底点之前有事务提交
COMMIT TRANSACTION;
上述操作只会将 order_num 设置成 2223332,第二次的修改不会生效。