When you try to use the NEW variable in a statement-level trigger, you get ERROR: record "new" is not assigned yet DETAIL: The tuple structure of a not-yet-assigned record is indeterminate.
which is not too friendly, given that people sometimes forget to specify FOR EACH <sth> at all, get the default behaviour of FOR EACH STATEMENT and scratch their heads. A quick search on the error detail reveals a few such confused users already. What's more, the documentation for PL/pgSQL triggers says that "This variable is NULL in statement-level triggers" but it's not really a NULL, for instance you can't execute "x is NULL" with it (you get the same error). I'm not that familiar with PL/pgSQL code, so I'm not sure how or if this should be fixed. From a quick look it seems that the NEW and OLD variables could be defined as row variables instead of record, since the format of the tuple is known. Would that make sense? Cheers, Jan PS: If changing them to row types would induce too much code churn that maybe we could use some trick to check if the error comes from using the OLD or NEW variable and add a HINT to the error message? J -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers