Sarei abbastanza entusiasta di essere mostrato sbagliato (a volte ne ho bisogno anche io), ma ne sono consapevole, fare riferimento ai nomi delle colonne usando le variabili è uno di quei casi in cui è effettivamente necessario utilizzare trigger PL/C piuttosto che PL/ Trigger PgSQL. Troverai esempi di tali trigger in contrib/spi e su PGXN.
In alternativa, nomina le tue colonne in modo coerente in modo da poterle referenziare direttamente, ad es. NEW.tenant_code
.
Personalmente, generalmente finisco per scrivere una funzione che crea il trigger:
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;