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

Usuń wiersze z kluczem obcym w PostgreSQL

Aby to zautomatyzować, możesz zdefiniować ograniczenie klucza obcego za pomocą ON DELETE CASCADE .
Cytuję instrukcję ograniczenia klucza obcego :

Sprawdź aktualną definicję FK w ten sposób:

SELECT pg_get_constraintdef(oid) AS constraint_def
FROM   pg_constraint
WHERE  conrelid = 'public.kontakty'::regclass  -- assuming public schema
AND    conname = 'kontakty_ibfk_1';

Następnie dodaj lub zmodyfikuj ON DELETE ... część do ON DELETE CASCADE (zachowując wszystko inne tak, jak jest) w oświadczeniu typu:

ALTER TABLE kontakty
   DROP CONSTRAINT kontakty_ibfk_1
 , ADD  CONSTRAINT kontakty_ibfk_1
   FOREIGN KEY (id_osoby) REFERENCES osoby (id_osoby) ON DELETE CASCADE;

Nie ma ALTER CONSTRAINT Komenda. Upuść i ponownie utwórz ograniczenie w jednej ALTER TABLE oświadczenie, aby uniknąć możliwych warunków wyścigu z równoczesnym dostępem do zapisu.

Oczywiście potrzebujesz do tego uprawnień. Operacja zajmuje ACCESS EXCLUSIVE zablokuj na stole kontakty i SHARE ROW EXCLUSIVE zablokuj na stole osoby .

Jeśli nie możesz ALTER tabeli, a następnie usuwanie ręcznie (jednorazowo) lub wyzwalaczem BEFORE DELETE (za każdym razem) to pozostałe opcje.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wywołanie funkcji lub procedury składowanej nie spowoduje wstawienia i utrwalenia zmian

  2. BŁĄD:w Postgresie znaleziono więcej niż jedną posiadaną sekwencję

  3. rekurencyjne zapytanie postgres na tej samej tabeli

  4. Jak sprawdzić, czy długi lat mieści się w granicach miasta?

  5. Łączenie się z PostgreSQL w IRI Workbench