这有点关系这个问题 https://stackoverflow.com/questions/1152260/postgres-sql-to-list-table-foreign-keys:
我有一个带有主键的表,并且有几个引用该主键(使用外键)的表。我需要从该表中删除行,其中主键未在任何其他表(以及一些其他约束)中引用。
例如:
Group
groupid | groupname
1 | 'group 1'
2 | 'group 3'
3 | 'group 2'
... | '...'
Table1
tableid | groupid | data
1 | 3 | ...
... | ... | ...
Table2
tableid | groupid | data
1 | 2 | ...
... | ... | ...
等等。组中的某些行未在任何表中引用,我需要删除这些行。除此之外,我需要知道如何查找引用组中给定行的所有表/行。
我知道我可以查询每个表并检查 groupid,但由于它们是外键,我想有更好的方法来做到这一点。
顺便说一句,这是使用 Postgresql 8.3。
DELETE
FROM group g
WHERE NOT EXISTS
(
SELECT NULL
FROM table1 t1
WHERE t1.groupid = g.groupid
UNION ALL
SELECT NULL
FROM table1 t2
WHERE t2.groupid = g.groupid
UNION ALL
…
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)