我有一个表 B,它有一个表 A 的外键,现在我想在 A 上做一个“DELETE CASCADE”的事情,但 PostgreSQL 不接受以下内容:
DELETE FROM ATable WHERE aid IN
(
DELETE FROM BTable WHERE aid IN
(
... [expression that depends on the entries in BTAble] ...
)
RETURNING aid
);
似乎只有 SELECT 可以在IN ()
子句内。我想有一些简单的(和标准的 SQL,不是特定于 PostgreSQL 的?)的方法吗?
编辑:当您遇到此类问题时,是否可以肯定地说某些东西的结构很糟糕?在我们的例子中,我有一种直觉认为..[expr]..
应该在一个新的 CTAable 中而不是作为 ATable 中的一个子集,但我不能真正指出任何设计范式来支持这一点。