For at automatisere dette, kan du definere fremmednøgle-begrænsningen med ON DELETE CASCADE
.
Jeg citerer manualen til udenlandske nøglebegrænsninger
:
Slå den aktuelle FK-definition op sådan her:
SELECT pg_get_constraintdef(oid) AS constraint_def
FROM pg_constraint
WHERE conrelid = 'public.kontakty'::regclass -- assuming public schema
AND conname = 'kontakty_ibfk_1';
Tilføj eller rediger derefter ON DELETE ...
del til ON DELETE CASCADE
(bevare alt andet som det er) i en erklæring som:
ALTER TABLE kontakty
DROP CONSTRAINT kontakty_ibfk_1
, ADD CONSTRAINT kontakty_ibfk_1
FOREIGN KEY (id_osoby) REFERENCES osoby (id_osoby) ON DELETE CASCADE;
Der er ingen ALTER CONSTRAINT
kommando. Slip og genskab begrænsningen i en enkelt ALTER TABLE
erklæring for at undgå mulige løbsforhold med samtidig skriveadgang.
Du har selvfølgelig brug for privilegierne til at gøre det. Handlingen tager en ACCESS EXCLUSIVE
lås på bordet kontakty
og en SHARE ROW EXCLUSIVE
lås på bordet osoby
.
Hvis du ikke kan ALTER
tabellen og derefter slette manuelt (en gang) eller med trigger BEFORE DELETE
(hver gang) er de resterende muligheder.