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

Kunci apa, jika ada, yang digunakan 'CREATE TRIGGER' di PostgreSQL 9.4.2

Anda membandingkan Postgres-XL dengan dokumentasi PostgreSQL utama. Dua produk yang berbeda, meskipun dengan sejarah yang sama. Postgres-XL memiliki banyak perubahan dari stok PostgreSQL.

CREATE TRIGGER harus terdaftar di dokumen Pg dan tidak, dan itu adalah kekeliruan.

Sekilas melihat kode sumber menunjukkan bahwa CREATE TRIGGER mengambil ShareRowExclusiveLock , jadi dalam hal ini dokumentasi XL cocok dengan perilaku PostgreSQL.

Anda dapat memeriksanya sendiri tanpa melihat sumbernya dengan melakukan sesuatu seperti ini:

CREATE TABLE test();

CREATE OR REPLACE FUNCTION dummy_tg() RETURNS TRIGGER
LANGUAGE plpgsql AS $$ BEGIN END; $$;

BEGIN;

CREATE TRIGGER blah BEFORE INSERT ON test FOR EACH ROW EXECUTE PROCEDURE dummy_tg();

\x

SELECT * FROM pg_locks 
WHERE pid = pg_backend_pid() 
AND relation = 'test'::regclass;

ROLLBACK;

... yang menunjukkan bahwa saya salah dalam membaca sumber, karena:

locktype | relation
mode     | AccessExclusiveLock

butuh AccessExclusiveLock.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PSQLException:Objek Besar tidak boleh digunakan dalam mode komit otomatis

  2. Memberitahu Pengguna Anda untuk Melakukan Fork Sendiri

  3. Membuat tes ekstensi di postgresql

  4. Dapatkan nilai presisi ganda dari string yang tidak konsisten untuk menggunakan ST_GeomFromText (PostGIS)

  5. Gabungkan 2 kolom menjadi satu kolom SQL