Me encantaría que me muestren mal (ocasionalmente también necesito esto), pero lo mejor que sé es que referir nombres de columna usando variables es uno de esos casos en los que realmente necesita usar activadores PL/C en lugar de PL/ Desencadenadores de PgSQL. Encontrará ejemplos de tales disparadores en contrib/spi y en PGXN.
Alternativamente, nombre sus columnas de manera consistente para poder hacer referencia a ellas directamente, p. NEW.tenant_code
.
Personalmente, generalmente termino escribiendo una función que crea el activador:
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;