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.