SQL\'DELETE CASCADE\'
|
我有一个表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]..
中的命中应该在新的CTAble中而不是作为ATable中的子集,但是我真的不能指出任何支持它的设计范例。
没有找到相关结果
已邀请:
4 个回复
娠侈脚惮顽
茂坦湿床够
或创建一个返回集合的函数:
附言以防万一,如果您不知道标准的
方法。 如果创建这样的表:
然后从
删除也会触发从
删除。 为此,ѭ9应该是ѭ10或
,并且与基于集合的解决方案相比,这对于批量更新而言效率较低。
盛虱
粳饶瓢部
并以此顺序删除B和A中的数据。