2017-06-12 8 views
0

私はオンラインゲームを書いています、派遣部隊という名前のセクションがあります。 1つのアカウントの2人以上のユーザーが1回の移動を送信しようとすると、軍隊は2倍になります。innodbの行をロックし、ライブバージョンを取得

私はmysqlから行のライブバージョンを取得し、読み込み、書き込み、その行の何かを更新しないようにしたいと思います。

実際には可能ですか?私はinnodbリファレンスで共有モードで更新とロックを選択するだけです。

任意のヘルプはappericiatedです。

+0

トランザクションを使用したいと思うでしょう。 – ceejayoz

+0

私はmysqliでトランザクションを使用しています。しかし、他のプロセスがその行を選択(読み込み)せずに待機するように行をロックしますか? –

+0

あなたは軍隊配備のステータスを示すあなたのテーブルにフラグ列を持つことができます。軍隊が配備されているかどうか常に確認することができます。 2つの異なるデバイスでユーザーがログインしても、これを処理できます。 –

答えて

0
BEGIN; 
SELECT ... FROM t ... WHERE ... FOR UPDATE; 
... 
UPDATE t ...; 
COMMIT; 

tから行を読み取ることができる他、彼らがしようとした場合、彼らは遅れたり、デッドロックされますいずれかSELECTがタッチした行を変更します。

あなたは本当にすべてを防ぐ必要がありますかは特定の行に対してと表示されますか?あなたのシナリオをさらに説明してください。

関連する問題