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? regards, tom lane ---------------------------(end of broadcast)--------------------------- TIP 5: Have you checked our extensive FAQ? http://www.postgresql.org/users-lounge/docs/faq.html