sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo deshabilito temporalmente las restricciones de integridad de db en django - postgresql?

Tengo la solución.

Tuve que deshabilitar los disparadores en la tabla para detener la verificación de restricciones de clave externa.

Desactivar disparadores

def disable_triggers(self):
    with connection.cursor() as cursor:
        cursor.execute('ALTER TABLE "Table Name" DISABLE TRIGGER ALL;')

Habilitar disparadores

def enable_triggers(self):
    with connection.cursor() as cursor:
        cursor.execute('ALTER TABLE "Table Name" ENABLE TRIGGER ALL;')

Notas importantes :

  • Según este enlace de documento , puede pasar una lista como segundo argumento a execute() (por ejemplo:es posible que desee pasar el nombre de la tabla dinámicamente), pero esto escapará automáticamente de las variables y podría terminar formando una consulta PostgreSQL sintácticamente incorrecta (lo que me llevó mucho tiempo arreglarlo)

  • Asegúrate de volver a activar los gatillos correctamente

  • Si recibe un Error de permiso denegado Entonces es posible que desee verificar los permisos de usuario de la base de datos, acabo de activar los permisos de superusuario de PgAdmin, lo cual estuvo bien para mí. y todo de vuelta al trabajo. ¿Cómo hacerlo?