我有了一个外键表A表B,现在我想做一个八九不离十“DELETE CASCADE”的thingie上A,但PostgreSQL将不会接受以下几点:SQL“DELETE CASCADE”
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中的子集,但我不能指出任何设计范例来支持它。
-1:我知道,我知道,但它远不是最好的答案。 – onedaywhen 2011-04-19 10:40:36
你在一般情况下可能是正确的。对我而言,这是解决我的问题的最简单方法。 – 2011-04-20 08:22:57