エンティティのカテゴリとサブカテゴリを設定しているので、サブカテゴリはカテゴリによって異なります。カテゴリを設定する際、完全なトランザクションが成功するか、完全なトランザクションが失敗するかを確認する必要があります。2つのクエリを一緒に使用した場合でも、1つずつ実行されるため、1つの挿入が成功し、もう1つの挿入が失敗する可能性があります。PHPまたはmysqliで原子性を維持するための良い方法はありますか?
1 に答える
2
いいえ、これらのデータベースは完全に無関係であり、データベース間のトランザクションなどはありません。少なくとも、私が知っていることではありません。:)
ただし、挿入にトランザクションを使用すると、少し安全になります。両方のデータベースでトランザクションを開始し、両方のデータベースですべての変更を行い、その後でのみ両方のトランザクションをコミットします。挿入/更新ステートメントはすでに実行されているため(制約エラーなどの問題が発生した場合はおそらく失敗します)、コミットしようとしている時点では、うまくいかない可能性はほとんどありません。
テーブルがトランザクションをサポートするストレージタイプになっていることを確認してください。
[編集]
使用できます
START TRANSACTION;
-- Your queries go here
COMMIT
トランザクション内でステートメントを実行します。
詳細については、http://dev.mysql.com/doc/refman/5.0/en/commit.htmlを参照してください。
于 2012-09-04T18:30:51.020 に答える