Marti Raudsepp <ma...@juffo.org> wrote: > The real point I was trying to convey (in my previous email) is > that these declarations should be part of the trigger *function* > not the function-to-table relationship. CREATE TRIGGER shouldn't > be in the business of declaring new local variables for the > trigger function. Whether we define new syntax for that or re-use > the argument list is secondary.
I think the reason the standard includes it in the trigger definition is that it allows the trigger code to be specified in the CREATE TRIGGER statement; and in fact, PostgreSQL is the first database product I have used which requires a trigger function to be created first. <triggered action> ::= [ FOR EACH { ROW | STATEMENT } ] [ WHEN <left paren> <search condition> <right paren> ] <triggered SQL statement> <triggered SQL statement> ::= <SQL procedure statement> | BEGIN ATOMIC { <SQL procedure statement> <semicolon> }... END If we ever support this part of the standard, we need to be able to specify these in the CREATE TRIGGER statement (or stay with the concept of reserving "special names" for these relations). So if we use non-standard syntax now, we are likely to be looking at an ugly hybrid of techniques in the future. That said, if we want to have a way to specify this for a function (for now), we could use the CREATE FUNCTION's WITH clause. I assume that a mismatch between the name specified there and the name which is used in the function body would be a run-time error when the trigger function is fired, not an error at the time that CREATE FUNCTION is run, since we only ensure valid syntax at CREATE FUNCTION time; we don't resolve any table names or column names at that time. For example, on a freshly-created database with no tables created: test=# create function xxx() returns trigger language plpgsql test-# as $$ begin update adsf set qwerty = 'xxx'; end; $$; CREATE FUNCTION -- Kevin Grittner EDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers