【发布时间】:2011-04-15 12:17:56
【问题描述】:
我有一个表 B,它有一个表 A 的外键,现在我想在 A 上做一个“删除级联”的事情,但 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].. 中的点击应该在一个新的 CTAble 中,而不是作为 ATable 中的一个子集,但我真的无法指出任何设计范式来支持这一点。
【问题讨论】:
标签: sql postgresql sql-delete cascading-deletes