0

我在这里和谷歌上看到多个答案,回滚事务仅意味着回滚最后一个命令,我还读到这意味着所有命令。(既没有记录也没有被引用)

我需要做的是创建一个在表 A 上插入/更新的存储过程,获取 A 的最后一个 ID,将该 ID 插入 B,获取 B 的最后一个 id,将其插入 C 等,等等。

我想知道提交或回滚事务中所有命令的方法是什么,以便启动事务,如果出现故障,则将所有内容恢复为原始内容。

带有 IF 错误和 last_id 的 SQL 代码将受到重视,因为我也看到了很多不同的方法来获取最后一个 id,但我不知道哪个更好。

顺便说一下,所有的表都是InnoDB

亲切的问候,

4

2 回答 2

1

START TRANSACTION,COMMITROLLBACK语法下所述:

这些语句提供对事务使用的控制:

[ deletia ]

  • ROLLBACK回滚当前事务,取消其更改。
于 2012-11-05T16:28:28.060 回答
1

如果你BEGIN是一笔交易,那么在你之前什么都不会被应用COMMIT。断开连接或发出 aROLLBACK与从不提交它是一样的。

当然,这是假设你已经autocommit开始了,通常情况就是这样。

如果您也将它们包装为事务,则可以回滚单个命令。

文档中提供了更多信息。

请记住,MyISAM 和其他引擎不支持事务,而 InnoDB 则支持。此外,只有INSERTUPDATE和语句可以回滚。其他事情,例如对架构的更改,则不是。DELETEREPLACE

于 2012-11-05T16:28:38.950 回答