行に対して2つの更新を行う必要がありますが、それらが一緒に行われ、別のユーザーからの他のクエリがそれらに干渉しないことを確認する必要があります。私は知ってSELECT...FOR UPDATE
いますが、最初の更新後はもちろんロックが解除されると思います。つまり、誰かが2番目の更新を妨害する可能性があります。他の誰かが最初にその行を更新した場合、更新は機能しますが、データを台無しにします。とにかく、2つの更新が想定どおりに行われるようにする方法はありますか?トランザクションについて聞いたことがありますが、私が誤解してトランザクションがコミットされるまで行がロックされない限り、2つの更新が実際に発生することを確認するだけで、「一緒に」発生するかどうかはわかりません。
クエリは次のとおりです。
SELECT z FROM table WHERE id='$id'
UPDATE table SET x=x+2 WHERE x>z
UPDATE table SET y=y+2 WHERE y>z
私は間違いを犯し、完全な情報を提供しませんでした。それが私のせいでした。クエリを更新しました。私が抱えている問題は、zも更新できるということです。SELECTの後、他の2つの更新の前にzが更新されると、データが混乱する可能性があります。トランザクションBEGIN/COMMITを実行すると、そのために機能しますか?