外部キー制約の簡単な例を次に示します。
CREATE TABLE products (
product_no integer PRIMARY KEY,
name text,
price numeric
);
CREATE TABLE orders (
order_id integer PRIMARY KEY,
shipping_address text,
...
);
CREATE TABLE order_items (
product_no integer REFERENCES products ON DELETE CASCADE,
order_id integer REFERENCES orders ON DELETE CASCADE,
quantity integer,
PRIMARY KEY (product_no, order_id)
);
商品または注文から行が削除されると、order_items からの参照行も削除されます。
しかし、製品または注文から孤立した行 (order_item を参照していない行) をデータベースで検出して削除することは可能ですか? 十分に簡単に実行できるようにクエリを設定できることはわかっていますが、より大規模で複雑なスキーマでは、大量のクエリになる可能性があります。ON DELETE CASCADE と同様のメカニズムがあるかどうか疑問に思っていますか?