Удалить строки, на которые НЕ ссылается внешний ключ
Это в некоторой степени связано сэтот вопрос:
У меня есть таблица с первичным ключом, и у меня есть несколько таблиц, которые ссылаются на этот первичный ключ (используя внешние ключи). Мне нужно удалить строки из этой таблицы, где первичный ключ не упоминается ни в одной из этих других таблиц (а также в некоторых других ограничениях).
Например:
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.