事务

什么是事务

事务用于将某些操作的多个SQL作为原子性操作,一旦有某一个出现错误,即可回滚到原来的状态,从而保证数据库数据完整性。

事务的4大特性

原子性 
	其对数据的修改,要么全部成功,要么全部都不成功。
一致性 
	事务开始到结束的时间段内,数据都必须保持一致状态。
隔离性 
	数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的"独立"环境执行。
持久性 
	事务完成后,它对于数据的修改是永久性的,即使出现系统故障也能够保持。

我们可以在mysql事务处理过程中定义保存点(SAVEPOINT),然后回滚到指定的保存点前的状态。
    定义保存点,以及回滚到指定保存点前状态的语法如下。
    1.定义保存点---SAVEPOINT 保存点名;
    2.回滚到指定保存点---ROLLBACK TO SAVEPOINT 保存点名:

实列 开启一个事务

开启事务,给数据加锁
# begin;#开始
# select id from t1 where name = 'alex' for update;
# update t1 set id = 2 where name = 'alex';
# commit;#结束

实列 开启回滚

mysql> BEGIN; -- 或者start transaction;#开启事务
mysql> INSERT INTO user VALUES ('3','one','0','');#向表user中插入2条数据
mysql> INSERT INTO user VALUES ('4,'two','0','');#向表user中插入2条数据
mysql> select * from user;#查询user表
mysql> SAVEPOINT test;#指定保存点,保存点名为test
mysql> INSERT INTO user VALUES ('5','three','0','');#向表user中插入第3条数据
mysql> select * from user;#查表
mysql> ROLLBACK TO SAVEPOINT test;#回滚到保存点test
mysql> select * from user;#查表
原文地址:https://www.cnblogs.com/saoqiang/p/12386710.html