PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Khóa nào, nếu có, có sử dụng 'CREATE TRIGGER' trong PostgreSQL 9.4.2 không

Bạn đang so sánh Postgres-XL với tài liệu PostgreSQL chính. Hai sản phẩm khác nhau, mặc dù có chung lịch sử. Postgres-XL có rất nhiều thay đổi từ PostgreSQL cổ phiếu.

CREATE TRIGGER nên được liệt kê trong tài liệu Pg và không, và đó là một sự giám sát.

Xem nhanh mã nguồn cho thấy rằng CREATE TRIGGER lấy một ShareRowExclusiveLock , vì vậy trong trường hợp này, tài liệu của XL phù hợp với hành vi của PostgreSQL.

Bạn có thể tự mình kiểm tra điều này mà không cần xem các nguồn bằng cách làm như sau:

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;

... điều này cho thấy rằng tôi đã sai khi đọc các nguồn, bởi vì:

locktype | relation
mode     | AccessExclusiveLock

nó cần một 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. Hàm LPAD () trong PostgreSQL

  2. Làm cách nào để chúng ta xây dựng bảng Chuẩn hóa từ một tệp văn bản được DeNormalized?

  3. Postgresql thực thi kết hợp cột hai chiều duy nhất

  4. Docker container tắt do lỗi 'thư mục dữ liệu có quyền sở hữu sai' khi được thực thi trong windows 10

  5. Làm cách nào để chèn vào bảng giá trị từ hai mảng trong Postgres?