MySQL 在创建 table 失败时提交事务
MySQL does commit of transaction when fails with creation of table
服务器版本:5.7.17 MySQL 社区服务器 (GPL)
这是我的案例。
我有两个 tables.
CREATE TABLE a (id INT PRIMARY KEY);
CREATE TABLE b (id INT PRIMARY KEY);
现在,我正在做我的交易:
START TRANSACTION;
INSERT INTO `a` VALUE (1);
CREATE TABLE b (id INT PRIMARY KEY);
当然我希望语句 3 (CRATE TABLE 'b') 会失败,因为 table 已经存在。确实如此。问题是它也插入了,在我之前不应该 运行
COMMIT;
无法回滚事务 - table 'a' 中的记录“1”保持不变。
您对如何避免此类行为有任何想法或想法吗?我还注意到,当我故意在 CREATE TABLE STATEMENT 中执行语法错误时,它会像预期的那样失败,但不会创建 'a' 中的记录。
有许多语句会导致隐式提交。 CREATE TABLE 就是其中之一。
更多信息:
https://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html
也许How to prevent mysql implicit commit能帮上点忙。
服务器版本:5.7.17 MySQL 社区服务器 (GPL)
这是我的案例。 我有两个 tables.
CREATE TABLE a (id INT PRIMARY KEY);
CREATE TABLE b (id INT PRIMARY KEY);
现在,我正在做我的交易:
START TRANSACTION;
INSERT INTO `a` VALUE (1);
CREATE TABLE b (id INT PRIMARY KEY);
当然我希望语句 3 (CRATE TABLE 'b') 会失败,因为 table 已经存在。确实如此。问题是它也插入了,在我之前不应该 运行
COMMIT;
无法回滚事务 - table 'a' 中的记录“1”保持不变。
您对如何避免此类行为有任何想法或想法吗?我还注意到,当我故意在 CREATE TABLE STATEMENT 中执行语法错误时,它会像预期的那样失败,但不会创建 'a' 中的记录。
有许多语句会导致隐式提交。 CREATE TABLE 就是其中之一。
更多信息: https://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html
也许How to prevent mysql implicit commit能帮上点忙。