Ik zou heel enthousiast zijn als ik het fout zou zien (ik heb dit zelf ook af en toe nodig), maar het beste wat ik weet, is dat het verwijzen van kolomnamen met behulp van variabelen een van die gevallen is waarin je eigenlijk PL/C-triggers moet gebruiken in plaats van PL/ PgSQL-triggers. Voorbeelden van dergelijke triggers vindt u in contrib/spi en op PGXN.
U kunt uw kolommen ook consequent een naam geven, zodat u er direct naar kunt verwijzen, b.v. NEW.tenant_code
.
Persoonlijk schrijf ik over het algemeen een functie die de trigger creëert:
create function create_tg_stuff(_table regclass, _args[] text[])
returns void as $$
begin
-- explore pg_catalog a bit
execute $x$
create function $x$ || quote_ident(_table || '_tg_stuff') || $x$()
returns trigger as $t$
begin
-- more stuff
return new;
end;
$t$ language plpgsql;
$x$;
end;
$$ language plpgsql;