mysql文档指出,某些语句将在事务期间导致隐式提交。例如:
CREATE TABLE foo (bar INT);
START TRANSACTION;
INSERT INTO foo VALUES (1);
CREATE TEMPORARY TABLE mumble like foo;
ALTER TABLE mumble modify bar INT UNSIGNED;
ROLLBACK;
SELECT * FROM foo;
回滚后,我从 foo 中返回了一行——文档实际上说,如果您使用临时关键字,alter table 不应导致隐式提交,但 ALTER TEMPORARY TABLE 语法无效,并删除临时表不会导致隐式提交,所以我怀疑只是一个错误(至少从 5.5.29 开始)
在任何情况下,我想做的是告诉 mysql 永远不要隐式提交,而是在给出会导致隐式提交的命令时失败/回滚。
我怀疑没有办法做到这一点,环顾四周,但我希望我错了。希望这里有人知道:)