Re: ON DELETE SET NULL clauses do error when more than two columns are referenced to one table - Mailing list pgsql-bugs

From Tom Lane
Subject Re: ON DELETE SET NULL clauses do error when more than two columns are referenced to one table
Date
Msg-id 5863.1187016262@sss.pgh.pa.us
Whole thread Raw
In response to Re: ON DELETE SET NULL clauses do error when more than two columns are referenced to one table  (Heikki Linnakangas <heikki@enterprisedb.com>)
Responses Re: ON DELETE SET NULL clauses do error when more than two columns are referenced to one table
Re: ON DELETE SET NULL clauses do error when more than two columns are referenced to one table
List pgsql-bugs
Heikki Linnakangas <heikki@enterprisedb.com> writes:
> I'm not sure what to do about this. We could change the order the
> triggers are fired to breadth-first. If all the setnull triggers were
> executed first, there would be no problem. But that seems like a pretty
> big change, and I'm afraid it might have other unintended consequences.

I think it's not so much that they should be "breadth first" as that the
updates generated by the triggers shouldn't count as their own
sub-statements.  The trigger events generated by those updates need to
go at the end of the outer statement's trigger queue.  We'll need to
change the API of SPI_execute_snapshot for this, but since that's only
for the use of the RI triggers anyway, it doesn't seem like a problem.

I also notice that only one of the
afterTriggerMarkEvents/afterTriggerInvokeEvents pairs in trigger.c
is coded as a "while" ... they probably all must be if we expect that RI
triggers will generate events at the same trigger level.

            regards, tom lane

pgsql-bugs by date:

Previous
From: Brian Hirt
Date:
Subject: Re: failed to re-find parent key in "..." for deletion target page
Next
From: Heikki Linnakangas
Date:
Subject: Re: ON DELETE SET NULL clauses do error when more than two columns are referenced to one table