Als je controle hebt over je schema, zou ik het schema cascadering laten gebruiken verwijdert .
Uit het artikel (het meer relevante gedeelte vertaald voor uw voorbeeld)
CREATE TABLE point
(
pt_id integer PRIMARY KEY,
evt_id integer REFERENCES event ON DELETE CASCADE
)
Als je cascades hebt ingesteld, kun je ze gewoon verwijderen uit de hoofdgebeurtenistabel en alle andere tafels worden automatisch opgeschoond
Anders moet u eerst alle verwijzingen verwijderen en daarna de hoofdtabel. U moet dit in één transactie doen om de gegevens consistent te houden
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;