sql >> Database >  >> RDS >> PostgreSQL

Postgres SELECTEER ... VOOR UPDATE in functies

Nee, het maakt niet uit. Zelfs als SELECT 1 FROM table WHERE ... FOR UPDATE wordt gebruikt, vergrendelt de query alle rijen die voldoen aan de where-voorwaarden.

Als de query rijen ophaalt uit een join en we geen rijen willen vergrendelen van alle tabellen die bij de join zijn betrokken, maar alleen rijen van specifieke tabellen, een SELECT ... FOR UPDATE OF list-of-tablenames syntaxis kan handig zijn:
http://www.postgresql.org/docs/9.0/static/sql-select.html#SQL-FOR-UPDATE-SHARE


Gebruik in Pl/PgSql een PERFORM commando om het zoekresultaat te negeren:
http://www.postgresql.org/docs/9.2/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-SQL-NORESULT

In plaats van:

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

gebruik:

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



  1. Recursieve MySQL-query met relationele innoDB

  2. FOUT 2003 (HY000):Kan geen verbinding maken met MySQL-server op '127.0.0.1' (111)

  3. Hoeveel zoekopdrachten zijn te veel?

  4. Top PostgreSQL-beveiligingsbedreigingen