Desactivar claves constraints en postgreSQL



A veces es necesario deshabilitar las restricciones de claves foráneas en postgreSQL para realizar trabajos de mantenimiento o porque estamos desarrollando en entorno de desarrollo y nos molestan para hacer pruebas.

Es un proceso sencillo con la siguiente sentencia:

ALTER TABLE nombre_tabla DISABLE TRIGGER ALL

Con esta sentencia deshabilitamos las claves de una tabla específica.

Para volverla a habilitar

ALTER TABLE nombre_tabla ENABLE TRIGGER ALL

Pero si tenemos 200 tablas hacer esto una a una es un poco pesado por eso podemos ejecutar esta consulta:

select 'ALTER TABLE ' || table_name || ' DISABLE TRIGGER ALL;' from information_schema.tables where table_schema = 'public';

Que lo que hace es crearnos una sentencia de DISABLE por cada tabla

ALTER TABLE promotions DISABLE TRIGGER ALL;
ALTER TABLE notifications DISABLE TRIGGER ALL;
ALTER TABLE studies_charts DISABLE TRIGGER ALL;
ALTER TABLE radio_config_comercials DISABLE TRIGGER ALL;
...
ALTER TABLE xppp DISABLE TRIGGER ALL;

Para habilitarlas el mismos proceso pero con ENABLE

Saludos
Alex.