Re: Foreign keys

Поиск
Список
Период
Сортировка
От Jan Wieck
Тема Re: Foreign keys
Дата
Msg-id 3EFAE10A.2020608@Yahoo.com
обсуждение исходный текст
Ответ на Foreign keys  ("Matt Browne" <mattb@fusion-advertising.co.uk>)
Ответы Re: Foreign keys  (Rich Shepard <rshepard@appl-ecosys.com>)
Список pgsql-general
Matt Browne wrote:
> Hello!
>
> I have a question regarding foreign keys and general garbage collection
> of data... If anyone could provide assistance, it'd be much appreciated!
>
> Basically, we have a fairly complex database, with many tables
> (customers, etc) that need to reference addresses that are contained in
> a generic address table.
>
> So:
>     customer [table]
>     --------
>     id            serial
>     <other fields>
>
>     customer_addresses [table]
>     ------------------
>     customer_id        integer
>     address_id        integer
>
>     supplier [table]
>     --------
>     id            serial
>     <other fields>
>
>     supplier_addresses [table]
>     ------------------
>     supplier_id        integer
>     address_id        integer
>
>     address [table]
>     -------
>     id            serial
>     <other fields>
>
> Other tables also reference records in the address table, using a
> similar sort of scheme.
>
> I have foreign keys set up so that if, for example, a record in customer
> is deleted, the corresponding records in the customer_addresses table
> are also removed. However, I can't find a way of ensuring records in the
> address table are deleted too, given that lots of different tables will
> reference address.id.
>
> What I'd like is for records in the address table to be automatically
> deleted at the end of each transaction if nothing references them any
> more. Is there any way to achieve this?

User defined triggers.

I would set up a separate address-reference-count table, holding the
address_id and a refcount (since this will get updated quite often and
has a smaller footprint this way).

For each reference of address you setup a trigger that increases or
decreases the refcount for the address, and when it drops to zero,
object terminated.


Jan

--
#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me.                                  #
#================================================== JanWieck@Yahoo.com #


В списке pgsql-general по дате отправления:

Предыдущее
От: Benjamin Jury
Дата:
Сообщение: FW: Foreign keys
Следующее
От: "Matt Browne"
Дата:
Сообщение: Re: Foreign keys