10-事务

2019-01-07  本文已影响0人  喝酸奶要舔盖__

事务基础

开启事务: start transaction; / begin;
需要保证要么一起成功要么一起失败的语句
提交事务: commit;  如果执行的过程中没有发生意外, 那么就可以commit,代表都成功了
回滚事务: rollback; 如果执行的过程中发生意外, 那么就可以rollback回到修改前的状态
实例:
create table bank(
    id int auto_increment primary key,
    card char(4),
    money int
);
insert into bank values(null, '1001', 1000);
insert into bank values(null, '1002', 500);

begin;
update bank set money=money-500 where card='1002';
rollback;
update bank set money=money+500 where card='1001';
commit;

注意点: 事务其实就是将原有的数据拷贝了一份, 在拷贝的基础上进行修改
        如果发生了意外, 回滚的时候直接删掉拷贝的数据即可
        如果没有发生意外, 那么需要通过commit将拷贝的数据应用到原始表中

 在MySQL中可以通过 delimiter 修改界定符号

事务的回滚点

begin;
insert into bank values(null, '1003', 3333);
savepoint aa;
insert into bank values(null, '1004', 4444);
savepoint bb;
insert into bank values(null, '1005', 5555);
rollback to aa;

注意点: 回滚到指定的点之后也不会自动提交, 如果想提交还是必须手动调用commit;

事务特点

上一篇 下一篇

猜你喜欢

热点阅读