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?


Reply via email to