给定一个外键约束的简单示例:
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 的机制?