これらの2つの挿入は独立して実行されるため、同時に実行されている別のプログラムは、最初の挿入は実行されたが2番目の挿入は実行されていない状態でデータベースを参照する場合があります。
これが問題になるかどうかは、アプリケーションロジックによって異なります。あなたの場合、追加情報なしで見分けるのは難しいです。おそらくそうではありません。 2つのアカウントを含む金融取引は、これがである例です。 問題:すべての口座残高の合計がいつでも間違っていることを望まない。
これが必要だと思われる場合は、パフォーマンスを犠牲にして操作をアトミックにすることができます。別のプログラムは、最初の挿入の前、または2番目の挿入の後にデータベースを参照します。これは次のように機能します:
$result = FALSE;
if (mysql_query('BEGIN')) {
if (mysql_query($query1) &&
mysql_query($query2))
$result = mysql_query('COMMIT'); // both queries looked OK, save
else
mysql_query('ROLLBACK'); // problems with queries, no changes
}
ストレージエンジンはトランザクションをサポートする必要があります。つまり、 InnoDB 。そうしないと、これは黙って機能しません。