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;
Non puoi fare riferimento a NEW all'interno della stringa di query. NEW è visibile nel corpo della funzione, ma non all'interno di EXECUTE ambiente. La soluzione migliore è passare i valori in USING clausola.
Ho anche sostituito l'equivalente to_char(NEW.updt_ts, '"log"WW') per il nome della tabella. to_char()
qui è più semplice e veloce.