Pokud máte nad svým schématem kontrolu, nechal bych schéma používat kaskádové smaže .
Z článku (vhodnější část přeložená pro váš příklad)
CREATE TABLE point
(
pt_id integer PRIMARY KEY,
evt_id integer REFERENCES event ON DELETE CASCADE
)
Pokud máte nastavené kaskády, stačí je smazat z tabulky hlavní události a všechny ostatní stoly budou automaticky vyčištěny
V opačném případě musíte nejprve odstranit všechny odkazy a poté odstranit hlavní tabulku. Měli byste to udělat v jedné transakci, aby byla data konzistentní
BEGIN;
DELETE FROM trace WHERE EXISTS
(SELECT 1 FROM point WHERE evt_id = 1139 AND trace.pt_id = point.pt_id);
DELETE FROM point where evt_id = 1139;
DELETE FROM magnitude where evt_id = 1139;
DELETE FROM event where evt_id = 1139;
COMMIT;