CREATE FUNCTION log_roll_test()
RETURNS trigger AS
$func$
BEGIN
EXECUTE format('INSERT INTO %I SELECT ($1).*'
, to_char(NEW.updt_ts, '"log"WW')) -- child table name
USING NEW;
RETURN NULL;
END
$func$ LANGUAGE plpgsql;
Du kan ikke henvise til NEW
inde i forespørgselsstrengen. NEW
er synlig i funktionsteksten, men ikke inde i EXECUTE
miljø. Den bedste løsning er at videregive værdierne i USING
klausul.
Jeg erstattede også den tilsvarende to_char(NEW.updt_ts, '"log"WW')
for tabelnavnet. to_char()
er hurtigere og enklere her.