2012-01-19 10 views
2

InnoDBテーブルからコードを選択してユーザに提供するPHPスクリプトがあります。それが選択されると、テーブルに戻ってテーブルが更新されます。PHPで更新するためのMySQLの選択とロック

部分コード:

その後

$read = "SELECT code FROM codes WHERE someCondition = true"

$update = "UPDATE codes SET status = 'assigned', timeAssigned = NOW() WHERE someCondition = true"

がどのように私は少しより堅牢これを行うと、同じコードを取得して二人のユーザーを防ぐためにはInnoDBのロックを使用して行くのです?

答えて

4

関連ドキュメント:here

SELECT FOR UPDATE code FROM codes ... 
+0

、ロックされた行を更新することができます知っているので、どのように私はUPDATEクエリを修正しますか? – bcmcfc

+1

同じ接続で実行されている限り、これを行う必要はありません。また、トランザクションを実行する必要があります。 – Evert

+0

@bcmcfc:ロックは接続レベルで確立されます。同じ接続を使用して更新を行う限り、許可されます。他の接続から試してみると、ロックされたフィールドを更新しようとする「他の誰か」とみなされます。 –

関連する問題