Estoy cargando datos de forma masiva y puedo volver a calcular todas las modificaciones de activación de forma mucho más económica después del hecho que fila por fila.
¿Cómo puedo desactivar temporalmente todos los desencadenantes en PostgreSQL?
postgresql
triggers
bulkinsert
David Schmitt
fuente
fuente
ENABLE REPLICA
oENABLE ALWAYS
.10.4
y parece ignorar esta declaración anterior.PostgreSQL conoce el
ALTER TABLE tblname DISABLE TRIGGER USER
comando, que parece hacer lo que necesito. Ver ALTER TABLE .fuente
ALTER TABLE ... DISABLE TRIGGER USER
requiere un bloqueo exclusivo en la mesa.Para desactivar el disparador
Para habilitar el disparador
fuente
ALTER TABLE table_name DISABLE TRIGGER all
No funciona con PostgreSQL 9.4 en mi máquina Linux si cambio una tabla a través del editor de tablas en pgAdmin y funciona si cambio la tabla a través de una consulta ordinaria. Los cambios manuales en la tabla pg_trigger tampoco funcionan sin el reinicio del servidor, pero la consulta dinámica como en postgresql.nabble.com ACTIVA / DESACTIVA TODOS LOS DISPARADORES EN LA BASE DE DATOS funciona. Podría ser útil cuando necesita algo de ajuste.
Por ejemplo, si tiene tablas en un espacio de nombres en particular, podría ser:
Si desea deshabilitar todos los disparadores con cierta función de disparo, podría ser:
Documentación de PostgreSQL para catálogos de sistemas
Hay otras opciones de control del proceso de disparo del disparador:
ALTER TABLE ... ENABLE REPLICA TRIGGER ... - el disparador se disparará solo en modo réplica.
ALTER TABLE ... HABILITAR SIEMPRE GATILLO ... - el gatillo se disparará siempre (obviamente)
fuente
También puede deshabilitar los desencadenantes en pgAdmin (III):
fuente
También no me funciona en Postgres 9.1. Yo uso las dos funciones descritas por Bartolo-otrit con alguna modificación. Modifiqué la primera función para que funcione para mí porque el espacio de nombres o el esquema deben estar presentes para identificar la tabla correctamente. El nuevo código es:
entonces simplemente hago una consulta de selección para cada esquema:
fuente