Je serais très enthousiaste à l'idée de me tromper (j'en ai parfois besoin moi-même), mais je sais que faire référence à des noms de colonnes à l'aide de variables est l'un de ces cas où vous devez réellement utiliser des déclencheurs PL/C plutôt que PL/ Déclencheurs PgSQL. Vous trouverez des exemples de tels déclencheurs dans contrib/spi et sur PGXN.
Vous pouvez également nommer vos colonnes de manière cohérente afin de pouvoir les référencer directement, par ex. NEW.tenant_code
.
Personnellement, je finis généralement par écrire une fonction qui crée le 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;