SET session_replication_role = replica;
Nó không làm việc với PostgreSQL 9.4 trên máy tính Linux của tôi nếu tôi thay đổi một bảng thông qua trình soạn thảo bảng trong pgAdmin và hoạt động nếu tôi thay đổi bảng thông qua truy vấn thông thường. Thay đổi thủ công trong bảng pg_trigger cũng không hoạt động mà không cần khởi động lại máy chủ nhưng truy vấn động như trên postgresql.nabble.com ENABLE/DISABLE ALL TRIGGERS IN DATABASE hoạt động. Nó có thể hữu ích khi bạn cần một số điều chỉnh.
Ví dụ nếu bạn có bảng trong một không gian tên đặc biệt nó có thể là:
create or replace function disable_triggers(a boolean, nsp character varying) returns void as
$$
declare
act character varying;
r record;
begin
if(a is true) then
act = 'disable';
else
act = 'enable';
end if;
for r in select c.relname from pg_namespace n
join pg_class c on c.relnamespace = n.oid and c.relhastriggers = true
where n.nspname = nsp
loop
execute format('alter table %I %s trigger all', r.relname, act);
end loop;
end;
$$
language plpgsql;
Nếu bạn muốn vô hiệu hóa tất cả gây nên với chức năng kích hoạt nhất định nó có thể là: tài liệu
create or replace function disable_trigger_func(a boolean, f character varying) returns void as
$$
declare
act character varying;
r record;
begin
if(a is true) then
act = 'disable';
else
act = 'enable';
end if;
for r in select c.relname from pg_proc p
join pg_trigger t on t.tgfoid = p.oid
join pg_class c on c.oid = t.tgrelid
where p.proname = f
loop
execute format('alter table %I %s trigger all', r.relname, act);
end loop;
end;
$$
language plpgsql;
PostgreSQL cho system catalogs
Có một contr khác tùy chọn ol của quá trình kích hoạt kích hoạt:
ALTER TABLE ... ENABLE REPLICA TRIGGER ... - trình kích hoạt sẽ chỉ kích hoạt ở chế độ bản sao.
ALTER TABLE ... ENABLE luôn kích hoạt ... - kích hoạt sẽ cháy luôn (rõ ràng)
Nguồn
2015-01-30 10:15:07
Chính xác những gì tôi đang tìm kiếm cho, cảm ơn! –
Và sau đó làm thế nào để bạn "tính toán lại tất cả các thay đổi kích hoạt"? –
Cẩn thận với tải đồng thời: 'ALTER TABLE ... DISABLE TRIGGER USER' yêu cầu khóa độc quyền trên bàn. –