Para automatizar isso, você pode definir a restrição de chave estrangeira com
ON DELETE CASCADE .Cito o manual para restrições de chave estrangeira :
Procure a definição FK atual assim:
SELECT pg_get_constraintdef(oid) AS constraint_def
FROM pg_constraint
WHERE conrelid = 'public.kontakty'::regclass -- assuming public schema
AND conname = 'kontakty_ibfk_1';
Em seguida, adicione ou modifique o
ON DELETE ... parte para ON DELETE CASCADE (preservando todo o resto como está) em uma declaração como:ALTER TABLE kontakty
DROP CONSTRAINT kontakty_ibfk_1
, ADD CONSTRAINT kontakty_ibfk_1
FOREIGN KEY (id_osoby) REFERENCES osoby (id_osoby) ON DELETE CASCADE;
Não há
ALTER CONSTRAINT comando. Solte e recrie a restrição em um único ALTER TABLE para evitar possíveis condições de corrida com acesso de gravação simultâneo. Você precisa dos privilégios para fazê-lo, obviamente. A operação leva um
ACCESS EXCLUSIVE bloquear na tabela kontakty e um SHARE ROW EXCLUSIVE travar na tabela osoby . Se você não puder
ALTER a tabela e, em seguida, excluindo manualmente (uma vez) ou pelo gatilho BEFORE DELETE (todas as vezes) são as opções restantes.