PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como desabilito temporariamente as restrições de integridade do banco de dados no django - postgresql


Consegui a solução.

Eu tive que desabilitar os Triggers na mesa para parar a verificação de restrição de chave estrangeira.

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

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

Observações importantes :

  • De acordo com este link do documento , você pode passar uma lista como segundo argumento para o execute() (por exemplo:você pode querer passar o nome da tabela dinamicamente), mas isso irá automaticamente escapar das variáveis ​​e você pode acabar formando uma consulta PostgreSQL sintaticamente errada (que levou muito do meu tempo para corrigi-lo)

  • Certifique-se de ligar os gatilhos corretamente

  • Se você estiver recebendo um erro de permissão negada Então você pode querer verificar as permissões de usuário do banco de dados, acabei de ativar as permissões de superusuário do PgAdmin, o que foi bom para mim. e tudo de volta ao trabalho. Como fazer?