sql >> Base de Datos >  >> RDS >> PostgreSQL

Postgres SELECCIONE ... PARA ACTUALIZAR en funciones

No, no importa. Incluso si SELECT 1 FROM table WHERE ... FOR UPDATE se usa, la consulta bloquea todas las filas que cumplen las condiciones where.

Si la consulta recupera filas de una combinación y no queremos bloquear filas de todas las tablas involucradas en la combinación, sino solo filas de tablas específicas, un SELECT ... FOR UPDATE OF list-of-tablenames la sintaxis puede ser útil:
http://www.postgresql.org/docs/9.0/static/sql-select.html#SQL-FOR-UPDATE-SHARE


En Pl/PgSql use un PERFORM comando para descartar el resultado de la consulta:
http://www.postgresql.org/docs/9.2/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-SQL-NORESULT

En lugar 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;