Eu ficaria bastante entusiasmado em ser mostrado errado (ocasionalmente também preciso disso), mas, melhor que eu saiba, referir nomes de colunas usando variáveis é um daqueles casos em que você realmente precisa usar gatilhos PL/C em vez de PL/ Acionadores PgSQL. Você encontrará exemplos de tais gatilhos em contrib/spi e no PGXN.
Como alternativa, nomeie suas colunas de forma consistente para poder referenciá-las diretamente, por exemplo
NEW.tenant_code
. Pessoalmente, geralmente acabo escrevendo uma função que cria o gatilho:
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;