いいえ、関係ありません。 SELECT 1 FROM table WHERE ... FOR UPDATE
の場合でも を使用すると、クエリはwhere条件を満たすすべての行をロックします。
クエリが結合から行を取得し、結合に関係するすべてのテーブルから行をロックしたくない場合は、行のみをロックします。特定のテーブルから、SELECT ... FOR UPDATE OF list-of-tablenames
構文が役立つ場合があります:
http://www.postgresql.org/docs/9.0/static/sql-select.html#SQL-FOR-UPDATE-SHARE
Pl / PgSqlでは、PERFORM
を使用します クエリ結果を破棄するコマンド:
http://www.postgresql.org/docs/9.2/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-SQL-NORESULT
代わりに:
SELECT 1 INTO dummy FROM my_table WHERE userid=v_1 LIMIT 1 FOR UPDATE;
使用:
PERFORM 1 FROM my_table WHERE userid=v_1 LIMIT 1 FOR UPDATE;