On December 28, 2025 10:41:19 PM EST, Tom Lane <[email protected]> wrote: >"David G. Johnston" <[email protected]> writes: >> On Sunday, December 28, 2025, H <[email protected]> wrote: >>> I have a feeling I might be missing how to use the combination of a >>> metavariable and a table name when used in an argument to a >procedure. > >> No, what you are doing is impossible if you limit yourself to direct >SQL >> command syntax writing. > >Yeah :-( > >> I’d probably do something like: >> versioning(…, format(‘%I.%I’, :’s’, ‘test_history’), …) > >The reason this is hard is that we don't support expressions in >CREATE TRIGGER, only simple literals. So any such processing would >have to be done in the client-side code that is sending the command, >and I don't think psql's variable-substitution ability is quite up >to the job. > >You might be able to make it work through the hacky method of >supplying the schema name and table name as separate trigger >arguments. > >Another idea could be to construct the desired string as a SELECT >result, and then use \gexec. There's a few too many moving parts >in that for my taste, but maybe it could work. > > regards, tom lane
That would explain it! I now see that when I read the CREATE TRIGGER documentation. I will use the workaround I found, ie. generating a literal string in another meta variable. It would be nice if this would be considered a request for an enhancement?
