PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Postgres SELECT ... FOR UPDATE w funkcjach

Nie, to nie ma znaczenia. Nawet jeśli SELECT 1 FROM table WHERE ... FOR UPDATE jest używane, zapytanie blokuje wszystkie wiersze, które spełniają warunki where.

Jeśli zapytanie pobiera wiersze ze sprzężenia, a nie chcemy blokować wierszy ze wszystkich tabel uczestniczących w łączeniu, ale tylko wiersze z określonych tabel, SELECT ... FOR UPDATE OF list-of-tablenames składnia może być użyteczna:
http://www.postgresql.org/docs/9.0/static/sql-select.html#SQL-FOR-UPDATE-SHARE


W Pl/PgSql użyj PERFORM polecenie do odrzucenia wyniku zapytania:
http://www.postgresql.org/docs/9.2/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-SQL-NORESULT

Zamiast:

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

użyj:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zastępowanie sekwencji liczbą losową

  2. Całkowita liczba rekordów na tydzień

  3. Wykryj zduplikowane elementy w rekurencyjnym CTE

  4. Mam problem z przeniesieniem mojej aplikacji rails do Heroku/z instalacją klejnotu „pg”?

  5. Perl + PostgreSQL — selektywna transpozycja kolumny do wiersza