テーブルAへの外部キーを持つテーブルBがあり、Aで「DELETECASCADE」を実行したいのですが、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 ()
句の中に入ることができるようです。これを行う簡単な(そしてPostgreSQL固有ではない標準SQL?)方法があると思いますか?
編集:あなたがこの種の問題にぶつかったとき、何かがひどく構造化されていると言っても安全ですか?私たちの場合、ヒットは..[expr]..
ATableのサブセットとしてではなく、新しいCTAbleにあるべきだと直感していますが、それをサポートする設計パラダイムを実際に示すことはできません。