Jeg ville være ret begejstret for at blive vist forkert (det har jeg også lejlighedsvis selv brug for), men bedst jeg er klar over, at henvise kolonnenavne ved hjælp af variabler er et af de tilfælde, hvor du faktisk skal bruge PL/C-triggere frem for PL/ PgSQL-udløsere. Du finder eksempler på sådanne triggere i contrib/spi og på PGXN.
Alternativt kan du navngive dine kolonner konsekvent, så du kan referere dem direkte, f.eks. NEW.tenant_code
.
Personligt ender jeg generelt med at skrive en funktion, der skaber triggeren:
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;