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;
U kunt niet verwijzen naar NEW binnen de queryreeks. NEW is zichtbaar in de hoofdtekst van de functie, maar niet in EXECUTE omgeving. De beste oplossing is om de waarden door te geven in de USING clausule.
Ik heb ook het equivalent vervangen door to_char(NEW.updt_ts, '"log"WW') voor de tabelnaam. to_char()
is hier sneller en eenvoudiger.