sql >> Database >  >> RDS >> PostgreSQL

Hoe schakel ik db-integriteitsbeperkingen tijdelijk uit in django - postgresql

Ik heb de oplossing.

Ik moest de triggers op de tafel uitschakelen om de beperking van de externe sleutel te stoppen.

Triggers uitschakelen

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

Triggers inschakelen

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

Belangrijke opmerkingen :

  • Volgens deze doc-link , kunt u een lijst als het tweede argument doorgeven aan de execute() methode (bijvoorbeeld:u wilt misschien de tabelnaam dynamisch doorgeven), maar dit zal automatisch ontsnappen aan de variabelen en u zou kunnen eindigen met het vormen van een syntactisch verkeerde PostgreSQL-query (wat veel van mijn tijd kostte om het te repareren)

  • Zorg ervoor dat u de triggers weer correct inschakelt

  • Als u een Toestemming geweigerd-foutmelding . krijgt Dan wil je misschien de DB-gebruikersrechten controleren, ik heb zojuist de superuser-rechten van PgAdmin ingeschakeld, wat goed was voor mij. en alles weer aan het werk. Hoe moet ik dit doen?



  1. Een sitemap maken met PHP en MySQL

  2. Leer 2 - 2 cijfers achter de komma op een vlotter?

  3. Dubbele records in postgresql

  4. SOM van MySQL voor elke n record