我有了一個外鍵表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