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.