Hvis du har kontrol over dit skema, ville jeg få skemaet til at bruge cascading sletter .
Fra artiklen (den mere relevante del oversat til dit eksempel)
CREATE TABLE point
(
pt_id integer PRIMARY KEY,
evt_id integer REFERENCES event ON DELETE CASCADE
)
Hvis du har konfigureret kaskader, så kan du bare slette fra hovedbegivenhedstabellen, og alle de andre borde vil blive ryddet op automatisk
Ellers skal du først slette alle referencerne, derefter sletter du hovedtabellen. Du bør gøre dette i én transaktion for at holde data konsistente
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;