Byl bych docela nadšený, kdyby se mi zobrazily špatně (sám to občas potřebuji), ale nejlépe vím, že odkazování názvů sloupců pomocí proměnných je jedním z těch případů, kdy ve skutečnosti potřebujete použít spouštěče PL/C spíše než PL/ Spouštěče PgSQL. Příklady takových spouštěčů najdete v contrib/spi a na PGXN.
Případně pojmenujte své sloupce konzistentně, abyste na ně mohli přímo odkazovat, např. NEW.tenant_code
.
Osobně obecně končím psaním funkce, která vytvoří spouštěč:
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;