PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Postgres SELECT ... FOR UPDATE em funções


Não, não importa. Mesmo se SELECT 1 FROM table WHERE ... FOR UPDATE for usado, a consulta bloqueará todas as linhas que atendem às condições where.

Se a consulta recuperar linhas de uma junção e não quisermos bloquear linhas de todas as tabelas envolvidas na junção, mas apenas linhas de tabelas específicas, um SELECT ... FOR UPDATE OF list-of-tablenames sintaxe pode ser útil:
http://www.postgresql.org/docs/9.0/static/sql-select.html#SQL-FOR-UPDATE-SHARE




Em Pl/PgSql use um PERFORM comando para descartar o resultado da consulta:
http://www.postgresql.org/docs/9.2/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-SQL-NORESULT

Em vez de:
SELECT 1 INTO dummy FROM my_table WHERE userid=v_1 LIMIT 1 FOR UPDATE;

usar:
PERFORM 1 FROM my_table WHERE userid=v_1 LIMIT 1 FOR UPDATE;