私はMySQL InnoDBを使用しています。MySQL - 単一のクエリで列が更新されるシーケンス
テーブルを更新し、各列が更新される順序を制御したいと考えています。可能であれば、すべて1つのクエリで理由は、私はゲームのキューシステムを持っているということです。 queue_1を終了すると、queue_2の値が割り当てられ、次にqueue_2が消去されます。
今、私はこれから予期せぬ結果を得ています。ときにはtotal_price_2がゼロに設定され、その後total_price_1にロードされます。どちらもゼロになります。 (私が望むものではない)
私は、DBがアップデートを実行する順序を決定することを読んだ。私は2つの更新を行う必要がある場合、それはいいです。私の目標はパフォーマンスです。
UPDATE
queue
SET
queue_1 = queue_2,
total_price_1 = total_price_2,
total_wait_1 = total_wait_2,
queue_2 = '',
total_price_2 = 0,
total_wait_2 = 0
WHERE id IN(1,2,3)
アップデート前に 'total_price_2'が' 0'になっていませんか? – MichaelRushton
@MichaelRushton良い考え。あなたのコメントの後、私は自分のクエリではなく、自然な文脈の中でコードを試しています。 7回試して、その都度作業しています。私はそれを与える順序を使用しています。私は嗅覚を守り、ポストバックするつもりです。 – Dor1000
更新前と更新後にキューデータを選択してエコーしました。私のアップデートは予定どおりに動作していたが、それ以外のものは後で値を変更していた。キセノンはこれに関して良い答えを持っています。 – Dor1000