Chcete-li to automatizovat, můžete definovat omezení cizího klíče pomocí ON DELETE CASCADE .
Cituji příručku pro omezení cizího klíče
:
Vyhledejte aktuální definici FK takto:
SELECT pg_get_constraintdef(oid) AS constraint_def
FROM pg_constraint
WHERE conrelid = 'public.kontakty'::regclass -- assuming public schema
AND conname = 'kontakty_ibfk_1';
Poté přidejte nebo upravte ON DELETE ... část na ON DELETE CASCADE (zachování všeho ostatního tak, jak je) v příkazu jako:
ALTER TABLE kontakty
DROP CONSTRAINT kontakty_ibfk_1
, ADD CONSTRAINT kontakty_ibfk_1
FOREIGN KEY (id_osoby) REFERENCES osoby (id_osoby) ON DELETE CASCADE;
Neexistuje žádné ALTER CONSTRAINT příkaz. Zrušte a znovu vytvořte omezení v jediné ALTER TABLE prohlášení, abyste se vyhnuli možným závodům se současným přístupem pro zápis.
K tomu samozřejmě potřebujete oprávnění. Operace vyžaduje ACCESS EXCLUSIVE zámek na stole kontakty a SHARE ROW EXCLUSIVE zámek na stůl osoby .
Pokud nemůžete ALTER tabulku a poté smazání ručně (jednou) nebo spouštěčem BEFORE DELETE (pokaždé) jsou zbývající možnosti.