返回介绍

transaction processing

发布于 2024-06-15 14:30:40 字数 3984 浏览 0 评论 0 收藏 0

Transaction processing

并非所有的数据库都支持事务处理,MyISAM 和 InnoDB 是最常用的两种引擎。MyISAM 不支持事务处理

事务处理可以用于维护数据库的完整性,它保证成批的MySQL操作要么完全执行,要么完全不执行。

  • 事务(transaction):指一组 SQL 语句
  • 回退(rollback)指撤销指定 SQL 语句的过程
  • 提交(commit)指将未存储的SQL语句结果写入数据库表。
  • 保留点(savepoint)指事务处理中设置的临时占位符(place-holder),你可以对它发布回退(与回退整个事务处理不同)。

标识需要回退的内容

START TRANSACTION; -- SQL 操作

ROLLABCK;

START TRANSACTION 标识了事务的开始位置,ROLLABCK 标识了事务的结束位置,两者之间的位置的 SQL 语句是一个事务。如果在执行该事务过程中出现了某种错误,则数据会会退到事务执行前的状态。即使有一部分执行成功了。

  • 需要注意的是,虽然能够在事务中写 CREATE 和 DROP 操作,但是执行回退后,它们无法被撤销。

提交

一般的 MySQL 都是针对数据库表执行和编写的,这就是所谓的隐含提交(implicit commit)即,提交(写或保存)操作时自动完成的(想要不使用默认提交,可以执行 SET autocommit=0)。但是在事务处理中,提交不会隐含地进行,为进行提交,需要使用COMMIT 明确地指出。

START TRANSACTION; -- SQL 操作

COMMIT;

  • 当 COMMIT 和 ROLLBACK 语句执行后,事务会自动关闭。

使用保留点

START TRANSACTION; -- SQL 操作 SAVEPOINT delete1; -- SQL 操作 ROLLABCK TO delete1;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文