我使用START TRANSACTION
执行一些MySQL查询,但在执行COMMIT
后,以下查询在数据库中不生效
使用mysqli_query以相同的顺序执行以下查询:
SET names utf8
SET AUTOCOMMIT=0
START TRANSACTION
INSERT INTO table1 (a, b) VALUES (1,2) ;
INSERT INTO table2 (c, d) VALUES (1,1) ;
INSERT INTO table2 (c, d) VALUES (2,1) ;
COMMIT
INSERT INTO table3 (e, f) VALUES (9,7) ;
< - 这不会插入任何东西!!
注意:最后一个查询应该在START TRANSACTION
COMMIT
块之外执行。
这真让我疯狂。因为我似乎无法弄清楚问题!!
答案 0 :(得分:0)
我认为问题是指令的顺序。 尝试在最后执行提交。
SET names utf8
SET AUTOCOMMIT=0
START TRANSACTION
INSERT INTO table1 (a, b) VALUES (1,2) ;
INSERT INTO table2 (c, d) VALUES (1,1) ;
INSERT INTO table2 (c, d) VALUES (2,1) ;
INSERT INTO table3 (e, f) VALUES (9,7) ;
COMMIT
答案 1 :(得分:0)
问题在于SET AUTOCOMMIT=0
,因此我必须在每次查询后查询COMMIT
。
因此解决方案是在每次查询后设置SET AUTOCOMMIT=1
或使用COMMIT
。