MyISAM:不支持明确的事务处理管理
InnoDB:支持事务处理
事务处理:维护数据库完整性,保证数据库不包含不完整的操作结果
无错误:整组语句提交数据库
发生错误:回退以恢复数据库到某个已知且安全的状态
数据库故障:比如超出磁盘空间、安全限制、表锁
名词解释:
事务(transaction ):一组sql语句
回退(rollback):撤销指定的sql语句的过程
提交(commit):指将未存储的sql语句结果写入数据表
保留点(savepoint):指事务处理中设置的临时占位符(place-holder),可以对它发布回退。
使用事务:
事务开始:
START TRANSACTION;
....sql....语句
ROLLBACK;
ROLLBACK:只能在START TRANSACTION命令之后
事务处理用来管理:INSERT UPDATE DELETE语句。
使用COMMIT:
隐含提交:一般的msyql语句都是直接对数据库进行操作(自动进行)
事务处理块中,不会隐含进行提交。
START TRANSACTION;
.....Sql语句....
COMMIT;
隐含事务关闭:当COMMIT或ROLLBACK语句执行后,事务会自动关闭。(保留点也会被释放, mysql5中也可以用release savepoint来明确的释放保留点)
使用保留点(SAVEPOINT): 设置临时占位符
SAVEPOINT delete1
ROLLBACK TO delete1
更改默认提交行为:
Autocommit 标志决定是否自动提交更改
Autocommit 设置为0, mysql不自动提交(commit也不行)直到autocommit=1才行
SET autocommit = 0