SET session_replication_role = replica;
No funciona con PostgreSQL 9.4 en mi máquina Linux si cambio de una tabla a través del editor de tablas en pgAdmin y funciona si cambio de mesa a través de consulta ordinaria. Los cambios manuales en la tabla pg_trigger tampoco funcionan sin el reinicio del servidor, pero funciona la consulta dinámica como en postgresql.nabble.com ENABLE/DISABLE ALL TRIGGERS IN DATABASE. Podría ser útil cuando necesites un ajuste.
Por ejemplo, si tiene tablas en un espacio de nombres particular, podría ser:
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;
Si desea desactivar todos los disparadores con cierta función de activación podría ser: documentación
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 para system catalogs
Hay otro contr ol opciones del proceso de cocción de activación:
ALTER TABLE ... ENABLE REPLICA TRIGGER ... - el disparador se disparará solo en el modo de réplica.
ALTER TABLE ... ACTIVAR Activar siempre ... - gatillo siempre se dispara (obviamente)
Exactamente lo que estaba buscando para, gracias! –
Y luego, ¿cómo "recalcula todas las modificaciones de activación"? –
Cuidado con la carga simultánea: 'ALTER TABLE ... DISABLE TRIGGER USER' requiere un bloqueo exclusivo en la tabla. –