Du haut de ma tête, cela devrait fonctionner comme ceci :
EXECUTE format('
INSERT INTO %I (user_name, action, new_values, query)
SELECT $1, ''i'', $2, current_query()'
, tg_table_name::text || '_audit')
USING current_user, hstore(NEW);
Il est préférable de fournir toutes les valeurs avec le USING
clause.
Et vous pouvez caster une enregistrer dans hstore directement avec hstore(record)
.