wordpressでmysqlトランザクションを使用するには? 10 個の子を削除したいのですが、1 つがアクティブな場合、削除の合計はロールバックされます。
user2273344
質問する
19861 次
1 に答える
32
私はそれを試したことがなく、特別なことは何もありませんが、次のようなクエリを実行するだけです(クエリを実行して、結果に応じてまたはSTART TRANSACTION
使用する):COMMIT
ROLLBACK
mysql_query('START TRANSACTION');
$res1 = mysql_query('query1');
$res2 = mysql_query('query2');
If ( $res1 && $res2 ) {
mysql_query('COMMIT'); // commits all queries
} else {
mysql_query('ROLLBACK'); // rollbacks everything
}
したがって、このようなものを使用してワードプレスに変換できます
$wpdb->query('START TRANSACTION');
$result1 = $wpdb->delete( $table, $where, $where_format = null );
$resul2 = $wpdb->delete( $table, $where, $where_format = null );
if($result1 && $result2) {
$wpdb->query('COMMIT'); // if you come here then well done
}
else {
$wpdb->query('ROLLBACK'); // // something went wrong, Rollback
}
この回答try catch
のように使用することもできます(WordPressではなく同じアイデア)。Codexでクエリ関数 (および)の詳細を読むことができます。$wpdb
query
delete
MySQL のデフォルトの MyISAM ストレージ エンジンはトランザクションをサポートしていないため、オプションではありません。トランザクションを使用する場合は、すべてのテーブルが InnoDB として定義されていることを確認してください。
于 2013-10-03T08:26:27.823 に答える