1、事务的原子性
一组事务,要么成功;要么撤回。
2、稳定性
有非法数据(外键约束之类)?,事务撤回。
3、隔离性
事务独立运行。 一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。 事务的100%隔离,需要牺牲速度。
4、可靠性
软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。
可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit选项 决定什么时候吧事务保存到日志里。
- 先关闭自动提交 set autocommit=0;
- 开启事务 start transaction; // or begin
- 提交事务 commit
- 放弃事务 rollback
- 折返点 savepoint po_1
- rollback to savepoint po_1
- 之前的提交,之后的放弃
- 如果不再使用事务,开启自动提交 set autocommit =1;