PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Postgres SELEZIONA ... PER AGGIORNAMENTO nelle funzioni

No, non importa. Anche se SELECT 1 FROM table WHERE ... FOR UPDATE viene utilizzata, la query blocca tutte le righe che soddisfano le condizioni dove.

Se la query recupera le righe da un join e non vogliamo bloccare le righe di tutte le tabelle coinvolte nel join, ma solo le righe da tabelle specifiche, un SELECT ... FOR UPDATE OF list-of-tablenames la sintassi può essere utile:
http://www.postgresql.org/docs/9.0/static/sql-select.html#SQL-FOR-UPDATE-SHARE


In Pl/PgSql usa un PERFORM comando per eliminare il risultato della query:
http://www.postgresql.org/docs/9.2/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-SQL-NORESULT

Invece di:

SELECT 1 INTO dummy FROM my_table WHERE userid=v_1 LIMIT 1 FOR UPDATE;

usa:

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