Thomas Erskine <[EMAIL PROTECTED]> writes:
A before trigger doesn't always fire. If a column being inserted into is too small for the incoming data, psql complains: ERROR: value too long for type ... without giving the trigger procedure a chance to deal with it.
I believe this is a feature, not a bug: a CHAR(4) field should never, ever contain > 4 characters. Whether there is a trigger that is yet to be processed is not relevant.
Seems to me too, from the standard:
"The order of execution of a set of triggers is ascending by value of their timestamp of creation in their
descriptors, such that the oldest trigger executes first. If one or more triggers have the same timestamp value,
then their relative order of execution is implementation-defined."
I don't know how the check for the data integrity is implemented but if is a trigger that trigger is for sure older then the user defined trigger.
BTW I did this experiment:
1) Create table 2) create a before insert trigger: trigger_a 3) create a before insert trigger: trigger_b
test=# insert into test values ( 10 ); NOTICE: TRIGGER A NOTICE: TRIGGER B INSERT 3416835 1
4) drop trigger: trigger_a 5) create trigger: trigger_a ( now trigger b is the oldest one)
test=# insert into test values ( 10 ); NOTICE: TRIGGER A NOTICE: TRIGGER B INSERT 3416836 1
why this ?
Regards Gaetano Mendola
---------------------------(end of broadcast)--------------------------- TIP 8: explain analyze is your friend