0

だから私はinnoDBの行ロックを見ていましたが、ロックSELECT...FOR UPDATEのためにクエリに行くようです。私のファイルには、3 つのクエリがあります。2 つの更新と挿入。接続ごとに行がロックされ、他の誰かが行を変更する前にこれら 3 つのクエリを実行できるようにする方法はありますか?

クエリは次のとおりです。

"UPDATE table SET r=r+2 WHERE r > '$l' AND home='$home'";

"UPDATE table SET l=l+2 WHERE l > '$l' AND home='$home'";

"INSERT INTO table (value, home, l, r, value2)
            VALUES ('$value', '$home', '$l'+1, '$l'+2, value2) ";

明確にするために: home=$home のすべての行をロックし、3 つのクエリの後にそれらを解放したいと考えています。他の接続がこれらの行に書き込み可能になる前に、3 つのクエリが実行されるようにしたいと考えています。

4

1 に答える 1

1

トランザクションを使用してください。明示的にコミットするまで、変更は他のユーザーに表示されません。

詳細情報:トランザクションに関する msql ドキュメント

于 2012-04-03T20:16:18.467 に答える