Deshabilitar constrainst en PostgreSql
De CidesaWiki
Se consiguió la forma de deshabilitar los constraints (NO TRIGGERS) de una BD para ejecutar algún proceso de actualización de datos.
Hay que ejecutar 3 instrucciones y se debe tener privilegio de SUPERUSUARIO para que tenga efecto. Los constarints solo serán deshabilitados mientras se corre el proceso o instrucción que se desea, y luego al hacer COMMIT, los mismos son reestablecidos.
Hay que ejecutar las siguientes instrucciones:
- Esta instrucción le indica al Postgres que los constraints pueden ser desactivados. Por defecto Postgres no permite dehabilitar constraints.
update pg_trigger set tgdeferrable=true;
- Se desahbilitan los constraints hasta el próximo commit;
SET CONSTRAINTS ALL DEFERRED;
- Ejecutar el procedimiento o instrucciones deseadas.
- Volvemos a colocar los constraints como NO DESACTIVABLES, para que queden como su definición original.
update pg_trigger set tgdeferrable=false;