2011-08-09 12 views
5

"JOIN"に関連して "FOR UPDATE"を使用する正確なセマンティクスを理解したいと思います。最終結果を構築するために有効に使用されたすべての行をロックするだけですか?それは別のことをしますか?このトピックから"FOR UPDATE"& "JOIN"のSQLセマンティクス

http://postgresql.1045698.n5.nabble.com/Select-For-Update-and-Left-Outer-Join-td4363154.html

私はデータベースの実装との間にいくつかの重要な違いがあります理解しています。しかし私は確信していません。私はそこに一般的なRDBMSの動作に興味がありますが、特にPostgreSQLです。

答えて

10

あなたは正しいと思います。 JOINを使用した "SELECT FOR UPDATE"では、返された行に寄与するすべての行がロックされます。この動作を変更するには、 "FOR UPDATE"に "OF table_a"を追加して、table_aの行のみがロックされるようにします。あなたがここにPostgresのドキュメントにこれについての詳細を読むことができます:

http://www.postgresql.org/docs/9.0/static/sql-select.html#SQL-FOR-UPDATE-SHARE

+1

ああ、table_xyz'この 'は素晴らしいニュースです、私に大いに役立つでしょう。どうもありがとう – julkiewicz