我的代码:
mysql_query("SET AUTOCOMMIT=0");
mysql_query("START TRANSACTION");
insert_query, update_query1, update_query2
mysql_query("COMMIT");
update_query3
如果我将update_query3
放在COMMIT
之后,为什么COMMIT
查询不起作用?如果我把它放在{{1}}之前,它就可以了。这是为什么?真的很奇怪。
谢谢
答案 0 :(得分:2)
首先禁用自动提交。然后,您开始事务,进行更改并提交它们。然后执行另一个隐式启动另一个事务的查询。为了提交更改,您必须显式调用“COMMIT”,因为自动提交已关闭。
答案 1 :(得分:0)
因为COMMIT
(或ROLLBACK
)标志着交易的结束。
你必须使用:
mysql_query("COMMIT AND CHAIN");
但它仍然意味着你需要:
mysql_query("COMMIT");
... 在 update_query3
之后提交更改。
答案 2 :(得分:0)
update_query3不是任何现有交易的一部分。所以它启动一个新的(隐式)事务。
您永远不会提交由update_query3启动的事务,因此当您关闭连接时它将被回滚。