事务处理
程序员文章站
2022-07-12 17:03:00
...
Notes:SQL文件
事务处理(transaction processing)
为什么需要事务处理?
事务处理是一种机制,用来管理必须成批执行的MySQL操作,以保证数据库不包含不完整的操作结果。
术语
- 事务(transaction)指一组SQL语句。
- 回退(rollback)指撤销指定的SQL语句的过程。
- 提交(commit)指将未存储的SQL语句结果写入数据库。
- 保留点(savepoint)指事物处理中设置的临时占位符(placeholder),你可以对它发布回退(与回退整个事物处理不同)。
控制事务
SELECT * FROM ordertotals;
-- 启动事务管理
START TRANSACTION;
DELETE FROM ordertotals;
SELECT * FROM ordertotals;
-- 只能在一个事务处理内使用(在执行一条START TRANSACTION命令之后)
ROLLBACK;
SELECT * FROM ordertotals;
COMMIT
- 在事务处理中,提交不会隐含地进行。为了明确的提交,使用COMMIT语句。
- 当COMMIT或ROLLBACK语句执行后,事务会自动关闭(将来的更改会隐含提交)。
START TRANSACTION;
DELETE FROM orderitems WHERE order_num=20010;
DELETE FROM orders WHERE order_num=20010;
COMMIT;
使用保留点
- 为了支持回退部分事务处理,必须能在事务处理模块中合适的位置放置占位符,如果需要回退,可以回退到某个占位符。这样需要回退,可以回退到某个占位符。
- 保留点越多越好,保留点越多,你就越能按自己的意愿灵活地进行回退。
- 保留点在事务处理完成(执行一条ROLLBACK或COMMIT)后自动释放。也可以使用RELEASE SAVEPOINT明确地释放保留点。
SAVEPOINT delete1;
更改默认的提交行为
-- autocommit是针对每个连接而不是服务器的。
SET autocommit = 0;
更改外键约束
-- 1:检查外键约束 0:不检查外键约束
SET foreign_key_checks=1;
查看数据库隔离等级
SHOW variables LIKE '%isolation%';
SELECT @@global.tx_isolation, @@tx_isolation;
上一篇: TCC补偿切面核心代码实现
下一篇: lab2