【发布时间】:2012-11-05 16:07:20
【问题描述】:
我在这里和谷歌的多个答案中看到回滚事务仅意味着回滚最后一个命令,我还读到这意味着所有命令。 (既没有记录也没有被引用)
我需要做的是创建一个在表 A 上插入/更新的存储过程,获取 A 的最后一个 ID,将该 ID 插入 B,获取 B 的最后一个 id,将其插入 C 等,等等,等等
我想知道在事务中提交或回滚所有命令的方法是什么,以便启动事务,如果出现故障,将所有内容恢复为原始。
IF 错误和 last_id 的 SQL 代码将受到重视,因为我也看到了很多不同的方法来获取最后一个 id,但我不知道哪个更好。
顺便说一下,所有的表都是InnoDB
亲切的问候,
【问题讨论】:
-
您需要关闭自动提交。然后可以将一组更新作为单个事务提交。 dev.mysql.com/doc/refman/5.0/en/commit.html
-
根据官方文档,如果您执行“开始事务”,则自动提交设置为关闭。是不是真的?
标签: mysql transactions sql-update innodb sql-insert