Byłbym bardzo entuzjastyczny, gdybym się mylił (czasami sam też tego potrzebuję), ale najlepiej jestem świadomy, że odwoływanie się do nazw kolumn za pomocą zmiennych jest jednym z tych przypadków, w których faktycznie musisz użyć wyzwalaczy PL/C zamiast PL/ Wyzwalacze PgSQL. Przykłady takich wyzwalaczy znajdziesz w contrib/spi i na PGXN.
Alternatywnie nazwij swoje kolumny spójnie, aby móc bezpośrednio się do nich odwoływać, np. NEW.tenant_code
.
Osobiście zazwyczaj piszę funkcję, która tworzy wyzwalacz:
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;