Jag skulle vara ganska entusiastisk över att bli visad fel (jag behöver det här själv också ibland), men bäst jag vet är att referera kolumnnamn med variabler ett av de fall där du faktiskt behöver använda PL/C-utlösare snarare än PL/ PgSQL-utlösare. Du hittar exempel på sådana triggers i contrib/spi och på PGXN.
Alternativt kan du namnge dina kolumner konsekvent för att kunna referera till dem direkt, t.ex. NEW.tenant_code
.
Personligen slutar jag vanligtvis med att skriva en funktion som skapar triggern:
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;