欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

事务处理

程序员文章站 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;