3

我正在尝试执行一系列不同的查询。简而言之,我需要它们全部成功执行,或者我不需要它们都执行。

目前,我做

mysql_query("SET autocommit=0;");
mysql_query("BEGIN;");
mysql_query("QUERY A");
if(mysql_error()){
    mysql_query("rollback;");
    die();
}
mysql_query("QUERY B");
if(mysql_error()){
    mysql_query("rollback;");
    die();
}else{
    mysql_query("commit;");
 }

问题是,如果我强制查询 B 失败,我在 phpmyadmin 中查看数据库时仍然可以看到查询 A 的结果。当然不应该将查询结果添加到数据库中?

4

1 回答 1

1

问题是您使用的是 MyISAM。
从 的输出可以看出SHOW ENGINES

MyISAM 不支持事务,也不支持外键约束。
您需要将 MySQL 版本升级到支持 InnoDB 的版本。
这将解决您的问题。

我猜您的 ISP 没有帮助您,也许客户支持可以提供帮助。

于 2012-07-22T23:01:43.360 回答