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 に答える