ta jest nieco związane this question:Usuń wiersze NIE odwołują obcego klucza
Mam tabeli z kluczem podstawowym i mam kilka tabel, które odwołują się, że klucz podstawowy (przy użyciu kluczy obcych). Muszę usunąć wiersze z tej tabeli, gdzie klucz podstawowy nie jest odwoływany w żadnej z tych innych tabel (a także kilka innych ograniczeń).
Na przykład:
Group
groupid | groupname
1 | 'group 1'
2 | 'group 3'
3 | 'group 2'
... | '...'
Table1
tableid | groupid | data
1 | 3 | ...
... | ... | ...
Table2
tableid | groupid | data
1 | 2 | ...
... | ... | ...
i tak dalej. Niektóre wiersze w grupie nie są przywoływane w żadnej z tabel i muszę usunąć te wiersze. Oprócz tego, muszę wiedzieć, jak znaleźć wszystkie tabele/wiersze, które odnoszą się do danego wiersza w grupie.
Wiem, że mogę po prostu przesyłać zapytania do każdego stołu i sprawdzać grupy, ale ponieważ są to klucze obce, wyobrażam sobie, że jest lepszy sposób na zrobienie tego.
Przy tej okazji korzystasz z PostgreSQL 8.3.
Cóż, tak jak powiedziałem, chciałbym uniknąć tej sytuacji. Istnieje kilka tabel, konwencje nazw nie są standardowe i jest powolna. Ponieważ ograniczenia już istnieją, sądzę, że musi istnieć lepszy sposób. –