RE: Shouldn't ON UPDATE/DELETE triggers be BEFORE trigg ers?

Started by Mikheev, Vadimalmost 25 years ago1 messages
#1Mikheev, Vadim
vmikheev@SECTORBASE.COM

While thinking over Jeremy Radlow's recent problem report in
pgsql-general, it occurs to me that it's probably wrong to implement
referential integrity actions like ON CASCADE DELETE in AFTER
triggers. Seems to me that this breaks the fundamental rule of
referential integrity: if B references A then there must always be
a matching A row for every B row. Therefore, if we delete a row from
A we should delete the matching B row(s) before, not after, we delete
from A. Otherwise the remainder of the transaction sees an illegal
state of the database.

Comments? How about ON UPDATE actions?

No - AFTER is right place where to do action: don't forget
about DEFERRED RI constraints for which we have to perform
check/action sometime later *after* we changed PK/FK rows.

Vadim