Thread: triggers and FK cascades

triggers and FK cascades

From
Grzegorz Jaśkiewicz
Date:
Considering the following example.
Tables A and B.
Table A contains some data.
Table B reefers to table A using FK with 'on delete cascade'. Table B
has a trigger on it, after delete per row

Now, is there any way I can tell in the trigger on table B that it has
been called from a direct delete on that table, as oppose to the
indirect (FK) delete on table A?

Trigger is PLpg/SQL or C function.


--
GJ

Re: triggers and FK cascades

From
"David Johnston"
Date:
Don't know if this would work but could you check to see if the corresponding PK exists on A?

It may also help to explain why you would want to do such a thing so that someone may be able to provide an alternative
solutionas opposed to simply responding to a generic feature question. 

David J.

-----Original Message-----
From: pgsql-general-owner@postgresql.org [mailto:pgsql-general-owner@postgresql.org] On Behalf Of Grzegorz Jaskiewicz
Sent: Thursday, March 17, 2011 6:41 PM
To: pgsql-general@postgresql.org
Subject: [GENERAL] triggers and FK cascades

Considering the following example.
Tables A and B.
Table A contains some data.
Table B reefers to table A using FK with 'on delete cascade'. Table B has a trigger on it, after delete per row

Now, is there any way I can tell in the trigger on table B that it has been called from a direct delete on that table,
asoppose to the indirect (FK) delete on table A? 

Trigger is PLpg/SQL or C function.


--
GJ

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org) To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


Re: triggers and FK cascades

From
Grzegorz Jaśkiewicz
Date:
There's a generic trigger that sends a signal to a process whenever
changes are made (via listen/notify mechanism), but when FK cascade
fires it will cause a mass amount of notifies to be send out and I
want to avoid it.


2011/3/18 David Johnston <polobo@yahoo.com>:
> Don't know if this would work but could you check to see if the corresponding PK exists on A?
>
> It may also help to explain why you would want to do such a thing so that someone may be able to provide an
alternativesolution as opposed to simply responding to a generic feature question. 
>
> David J.
>
> -----Original Message-----
> From: pgsql-general-owner@postgresql.org [mailto:pgsql-general-owner@postgresql.org] On Behalf Of Grzegorz Jaskiewicz
> Sent: Thursday, March 17, 2011 6:41 PM
> To: pgsql-general@postgresql.org
> Subject: [GENERAL] triggers and FK cascades
>
> Considering the following example.
> Tables A and B.
> Table A contains some data.
> Table B reefers to table A using FK with 'on delete cascade'. Table B has a trigger on it, after delete per row
>
> Now, is there any way I can tell in the trigger on table B that it has been called from a direct delete on that
table,as oppose to the indirect (FK) delete on table A? 
>
> Trigger is PLpg/SQL or C function.
>
>
> --
> GJ
>
> --
> Sent via pgsql-general mailing list (pgsql-general@postgresql.org) To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general
>
>



--
GJ

Re: triggers and FK cascades

From
Vincent Veyron
Date:
Le vendredi 18 mars 2011 à 08:20 +0000, Grzegorz Jaśkiewicz a écrit :
> There's a generic trigger that sends a signal to a process whenever
> changes are made (via listen/notify mechanism), but when FK cascade
> fires it will cause a mass amount of notifies to be send out and I
> want to avoid it.
>

I have no personal experience with this, but citing an answer to a
similar question by Vibhor Kumar from a couple days ago :

use following command:
ALTER TABLE <tablename> DISABLE TRIGGER [ trigger_name | ALL | USER ]

--
Vincent Veyron
http://marica.fr/
Logiciel de gestion des sinistres pour le service juridique