我使用这样的构造:
mysql_query('BEGIN') or die('BEGIN transaction failed!');
$query = "DELETE FROM transaction";
try {
$result = mysql_query($query);
if (!$result) {
throw new Exception('Db error', 1);
}
$query = " INS ERT INTO transaction
SELECT ....."; // just buggy request
$result = mysql_query($query);
if (!$result) {
throw new Exception('Db error', 1);
}
mysql_query('COMMIT') or die('COMMIT transaction failed!');
} catch (Exception $e) {
mysql_query('ROLLBACK') or die('ROLLBACK transaction failed!');
}
但由于某种原因;删除";事务不会回滚,并且表保持为空。
我错过什么了吗?
MySQL Server(3.23-max版本和所有4.0及以上版本)支持与InnoDB和BDB 的交易
请将表引擎更改为innoDB
以支持事务
以下是如何更换引擎
ALTER TABLE table_name ENGINE = InnoDB;