2011-11-10 7 views
4

私は新しいMySQLユーザーです。私はInnoDBデータベースシステムを作成します。InnoDBテーブルの行をロックする方法は?

私の場合、更新用の選択が使用されている場合、私はロック行が必要です。しかし、多くの検索を行ったとしても、この行が1人のユーザーによって読み込まれた場合、すべてのユーザーの行をロックする方法を理解できません。

私はPHPを使用してmySQLデータベースに接続します。

私はそれを解決する手伝いができますか?

+0

は、なぜあなたは、テーブル内の行をロックする必要がありますか?あなたは[XY問題](http://meta.stackexchange.com/q/66377/164291)に陥っていないと確信していますか? –

答えて

2
select col1, col2 from table1 where col3='test' for update 
+3

おかげであなたは私のプロジェクトを保存しましたが、plzは私の側から他の人たちのために詳しく説明しようとしています –

8

MySQLは自動的に行ロックを行います。
自分で行をロックする必要はありません。

しかし、これを主張する場合は、select ... for updateを使用できます。
参照:http://dev.mysql.com/doc/refman/5.0/en/innodb-locking-reads.html

SELECT counter_field FROM child_codes FOR UPDATE; 
UPDATE child_codes SET counter_field = counter_field + 1; 
+1

この部分は私にとっては問題ありません。しかし、更新が必要なユーザーが同じである場合、mySQLが更新時にどのようにしてユーザーの行をロックするかを知ることができます。ありがとう – Flex60460

+2

@ Flex60460、MySQLは接続を追跡します。あなたはこれについて心配する必要はありません。 – Johan

+0

@ Flex60460複数のHTTP要求にまたがる行を実際にロックしますか? – nos

関連する問題