PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Postgres SELECT ... UNTUK PEMBARUAN dalam fungsi

Tidak, itu tidak masalah. Bahkan jika SELECT 1 FROM table WHERE ... FOR UPDATE digunakan, kueri mengunci semua baris yang memenuhi kondisi di mana.

Jika kueri mengambil baris dari gabungan, dan kami tidak ingin mengunci baris dari semua tabel yang terlibat dalam gabungan, tetapi hanya baris dari tabel tertentu, SELECT ... FOR UPDATE OF list-of-tablenames sintaks dapat berguna:
http://www.postgresql.org/docs/9.0/static/sql-select.html#SQL-FOR-UPDATE-SHARE


Di Pl/PgSql gunakan PERFORM perintah untuk membuang hasil kueri:
http://www.postgresql.org/docs/9.2/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-SQL-NORESULT

Alih-alih:

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

gunakan:

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. Bagaimana cara melewatkan catatan sebagai parameter untuk fungsi PL/pgSQL?

  2. Situasi di mana ActiveRecord dan SQL tidak mengembalikan hasil yang sama karena OID yang tidak dikenal diperlakukan sebagai String

  3. Bermigrasi dari DB2 ke PostgreSQL - Yang Harus Anda Ketahui

  4. TIDAK DAPAT MEMBERIKAN CREATE VIEW PADA SKEMA

  5. Gabungan kueri array JSONB di Postgres?