PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak tymczasowo wyłączyć ograniczenia integralności db w django - postgresql

Mam rozwiązanie.

Musiałem wyłączyć wyzwalacze na stole, aby zatrzymać sprawdzanie ograniczenia klucza obcego.

Wyłącz wyzwalacze

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

Włącz wyzwalacze

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

Ważne uwagi :

  • Według ten link do dokumentu , możesz przekazać listę jako drugi argument do execute() (np. możesz chcieć przekazać nazwę tabeli dynamicznie), ale spowoduje to automatyczne uniknięcie zmiennych i możesz w efekcie utworzyć niepoprawne składniowo zapytanie PostgreSQL (co zajęło mi dużo czasu, aby to naprawić)

  • Upewnij się, że spusty zostały ponownie włączone prawidłowo

  • Jeśli pojawia się błąd odmowy uprawnień Wtedy możesz chcieć sprawdzić uprawnienia użytkownika DB, właśnie włączyłem uprawnienia superużytkownika z PgAdmin, co było dla mnie w porządku. i wszystko z powrotem do pracy. Jak to zrobić?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres DB Trigger wywołujący funkcję Java

  2. Pobierz instancję IPAddr z jej reprezentacji json

  3. W jaki sposób Postgresql COPY TO STDIN with CSV wykonuje aktualizację w przypadku konfliktu?

  4. Hibernate wielorzędowa wstawka postgresql

  5. Oracle do PostgreSQL:składnia złączenia zewnętrznego ANSI w PostgreSQL