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;
Не можете да посочите NEW
вътре в низа на заявката. NEW
се вижда в тялото на функцията, но не и в EXECUTE
околен свят. Най-доброто решение е да подадете стойностите в USING
клауза.
Също така заместих еквивалентния to_char(NEW.updt_ts, '"log"WW')
за името на таблицата. to_char()
тук е по-бързо и по-лесно.