【发布时间】:2013-01-23 09:29:55
【问题描述】:
当使用 MySQL START TRANSACTION 并且 MySQL 决定回滚时 - 如果表有一个 AUTO_INCREMENT 列 - 该列是否在回滚期间......减少了?
还是应该?
我遇到了一些事务数据被正确回滚的问题 - 但看起来该表是自动递增的,而不是在回滚时递减。
# BOTH TABLES START OUT EMPTY // TABLE1 ID is **auto_increment**
START TRANSACTION;
INSERT INTO `TABLE1` (`ID` ,`NAME`) VALUES (NULL , 'Ted'); # MySQL TABLE1 **ID** is Auto incremented to 1
INSERT INTO `TABLE2` (`ID` ,`WRONGVALUE`) VALUES (NULL , 'some value'); # error. This TRANSACTION will not succeed
COMMIT; # Because of the error - this TRANSACTION is now rolled back and Ted is NOT added
因为 MySQL 会自动递增第一个表的 ID - 无论事务是成功还是失败 - 这是标准做法自己递减表吗?
【问题讨论】:
-
我相信自增一涨就回不来了
-
据我所知,事务不可能部分完成......要么完全完成,要么完全回滚(这是事务的重点)......除此之外,我同意与 jcho360
标签: mysql transactions auto-increment decrement