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()
ここではより速く、より簡単です。