我在这里和google中看到多个答案,回滚事务意味着只回滚最后一个命令,而且我也读到了暗示所有命令。 (既没有记录也没有参考)
我需要做的是创建一个存储过程,在表A上插入/更新,获取A的最后一个ID,将该ID插入B,获取B的最后一个ID,将其插入C等,等等,等
我想知道在事务中提交或回滚所有命令的方法是哪个,以便启动事务,如果出现故障,请将所有命令作为原始文件返回。
带有IF错误和last_id的SQL代码将被预先确定,因为我也看到了很多不同的方法来获取最后一个id,我不知道哪个更好。
顺便说一句,所有表都是 InnoDB
亲切的问候,
答案 0 :(得分:1)
正如START TRANSACTION
, COMMIT
, and ROLLBACK
Syntax所述:
这些陈述控制了transactions的使用:
[ deletia ]
ROLLBACK
回滚当前交易,取消其更改。
答案 1 :(得分:1)
如果您BEGIN
进行了一次交易,那么在您COMMIT
之前不会应用任何内容。删除连接或发出ROLLBACK
与永不提交连接相同。
当然,这是假设您已设置autocommit
,通常就是这种情况。
如果将它们包装为事务,也可以回滚各个命令。
the documentation中提供了更多信息。
请记住,MyoAM和其他引擎不支持InnoDB所做的事务。此外,只能回滚INSERT
,UPDATE
,DELETE
和REPLACE
语句。其他的东西,比如架构的改动,不是。