Remover linhas NÃO referenciadas por uma chave estrangeira
Isso é um pouco relacionado aessa questão:
Eu tenho uma tabela com uma chave primária e tenho várias tabelas que fazem referência a essa chave primária (usando chaves estrangeiras). Eu preciso remover linhas dessa tabela, onde a chave primária não está sendo referenciada em nenhuma dessas outras tabelas (assim como algumas outras restrições).
Por exemplo:
Group
groupid | groupname
1 | 'group 1'
2 | 'group 3'
3 | 'group 2'
... | '...'
Table1
tableid | groupid | data
1 | 3 | ...
... | ... | ...
Table2
tableid | groupid | data
1 | 2 | ...
... | ... | ...
e assim por diante. Algumas das linhas no Grupo não são referenciadas em nenhuma das tabelas e eu preciso remover essas linhas. Além disso, preciso saber como encontrar todas as tabelas / linhas que fazem referência a uma determinada linha no Grupo.
Eu sei que posso apenas consultar cada tabela e verificar o groupid, mas como são chaves estrangeiras, imagino que haja uma maneira melhor de fazê-lo.
Isso está usando o Postgresql 8.3 pelo caminho.