2011-10-18 19 views
5

en PostgreSQL 8.x para desactivar los factores desencadenantes que hago algo así como:Cómo deshabilitar los desencadenadores en PostgreSQL 9?

ALTER TABLE table DISABLE TRIGGER ALL; 

Cuando hago esto en PostgreSQL 9 me sale el siguiente:

my_database=> ALTER TABLE my_table DISABLE TRIGGER ALL; 
ERROR: permission denied: "RI_ConstraintTrigger_25366" is a system trigger 

PD: Esta tabla ha sido creada por el usuario que está ejecutando este comando.

¿Alguna pista sobre esto?

Respuesta

9

Algunos desencadenantes se agregan automáticamente para imponer restricciones, y no se pueden deshabilitar a menos que sea un superusuario. Si sólo desea desactivar los disparadores normales que ha añadido a continuación, hacer esto:

ALTER TABLE table DISABLE TRIGGER USER; 
+0

@ André: Este comportamiento era el mismo desde pg ** ** 8.1. (Y no te olvides de 'ALTER TABLE tabla HABILITAR TRIGGER USER;' después, por cierto, por cierto.) –

+0

Hola, gracias por la respuesta. Solo puedo desactivar si hago "TRIGGER ALL" con el usuario de Postgres, "TRIGGER USER" no deshabilita los Triggers. –

+5

Bueno, no desactivará la restricción desencadena no, porque entonces sus restricciones no se aplicarán. Si quiere deshabilitarlos, tendrá que ser un superusuario. – TomH

Cuestiones relacionadas