スキーマを制御できる場合は、スキーマでカスケードを使用します。削除 。
記事から(あなたの例のために翻訳されたより適切な部分)
CREATE TABLE point
(
pt_id integer PRIMARY KEY,
evt_id integer REFERENCES event ON DELETE CASCADE
)
カスケードを設定している場合は、メインイベントテーブルから削除するだけで、他のすべてのテーブルが自動的にクリーンアップされます
それ以外の場合は、最初にすべての参照を削除してから、メインテーブルを削除する必要があります。データの一貫性を保つために、これを1つのトランザクションで実行する必要があります
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;