事务
什么是事务
事务用于将某些操作的多个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;#查表
非学,无以致疑;非问,无以广识