[英]Transaction rollback in innodb mysql/php with mysql_query not working
我正在尝试执行一堆插入到事务内多个表中的语句,但是当我要求回滚时,一切都返回没有错误,但是数据已插入!
//Returns "YES"
$supports = mysql_query( "SELECT SUPPORT FROM INFORMATION_SCHEMA.ENGINES WHERE ENGINE = 'InnoDB'" );
//Start transaction
mysql_query( "SET AUTOCOMMIT=0" );
mysql_query( "START TRANSACTION" );
//Do some inserts
mysql_query( "INSERT INTO ...." );
$lastId = mysql_query( "SELECT LAST_INSERT_ID() as lastId" );
mysql_query( "INSERT INTO...." );
//Try to rollback
mysql_query( "ROLLBACK" );
mysql_query( "SET AUTOCOMMIT=1" );
这些表都被创建为InnoDB表。 运行SHOW CREATE TABLE <table_name>
显示所有表的创建方式如下:
CREATE TABLE `mytable` (
...the columns...
) ENGINE=InnoDB AUTO_INCREMENT=61 DEFAULT CHARSET=latin1
我究竟做错了什么?
@eggyal导致了答案。 我的START TRANSACTION
是在循环内而不是循环外,因此它启动了多个事务,并且仅回滚了最后一个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.