Re: Efficient ON DELETE trigger when referential integrity is

From: Stephan Szabo <sszabo(at)megazone23(dot)bigpanda(dot)com>
To: Cédric Dufour (Cogito Ergo Soft) <cedric(dot)dufour(at)cogito-ergo-soft(dot)com>
Cc: <pgsql-sql(at)postgresql(dot)org>
Subject: Re: Efficient ON DELETE trigger when referential integrity is
Date: 2002-11-12 16:30:30
Message-ID: 20021112082305.V67144-100000@megazone23.bigpanda.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

On Tue, 12 Nov 2002, [iso-8859-1] Cdric Dufour (Cogito Ergo Soft) wrote:

> Hello,
>
> I am trying to figure out how to handle tuple deletion efficiently when ON
> DELETE triggers and referential integrity are involved. The scenario is
> about this one:
>
> I have a MASTER and a SLAVE table, the latter referencing the former through
> a "FOREIGN KEY ... REFERENCES ... ON DELETE CASCADE" constraint. Besides, I
> have a ON DELETE trigger on the SLAVE table which updates a field in the
> MASTER table upon deletion.
>
> Now, there no need to update the MASTER table if the SLAVE table deletion
> was actually fired by the FOREIGN KEY constraint. The ON DELETE trigger
> updates a tuple in the MASTER table which will be deleted itself right
> after. This can make the deletion of a MASTER table tuple very slow, if
> there are a lot of related tuples in the SLAVE table.
>
> Is there any "by the book" way to handle this ?

Hmm, by the time that the on delete trigger runs after the foreign key
action, I believe that the row in MASTER is already gone. Running a
simple test in 7.3 seems to confirm this. Unfortunately it's still going
to look for the row to update it. I can't think of a good way to tell
if you're in an action that was caused by a foreign key rather than some
other user trigger or rule or straight delete apart from some vague
notions of really complicated workarounds which only partially help.

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Luis Sousa 2002-11-12 17:10:32 Re: Permission on insert rules
Previous Message Christoph Haller 2002-11-12 16:07:41 Re: averaging interval values