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.