Как бы вы организовали удаление записей из дочерней таблицы, при удалении записей из родительской таблицы, на которые они ссылаются?
Указание ON DELETE CASCADE в определении ключа приведёт заодно с удалением родительской записи к автоматическому удалению подчинённых записей.
CREATE TABLE X (a INTEGER) TABLESPACE MIRAVILD_DATA; CREATE UNIQUE INDEX X_U_IDX ON X (a) TABLESPACE MIRAVILD_INDEX; ALTER TABLE X ADD CONSTRAINT X_PK PRIMARY KEY (a) USING INDEX X_U_IDX ENABLE VALIDATE; / CREATE TABLE Y (b INTEGER, c INTEGER) TABLESPACE MIRAVILD_DATA; ALTER TABLE Y ADD CONSTRAINT Y_X_FK FOREIGN KEY (c) REFERENCES X (a) ON DELETE CASCADE ENABLE; CREATE UNIQUE INDEX Y_U_IDX ON Y (b) TABLESPACE MIRAVILD_INDEX; ALTER TABLE Y ADD CONSTRAINT Y_PK PRIMARY KEY (b) USING INDEX Y_U_IDX ENABLE VALIDATE; /
INSERT INTO x VALUES (1); INSERT INTO y VALUES (2, 1); COMMIT WORK; / DELETE FROM x; COMMIT WORK; /
Обе таблицы пусты.
P.S.
Конфигурация СУБД — Oracle Database 11g Express Edition Release 11.2.0.2.0
IDE — PL/SQL Developer Version 11.0.6.1776
Tags: ON DELETE CASCADE, Oracle, SQL