Re: Combining metavariables and table names

Поиск
Список
Период
Сортировка
От H
Тема Re: Combining metavariables and table names
Дата
Msg-id 60F4B5CE-F983-4174-A141-0C755284CDFD@meddatainc.com
обсуждение исходный текст
Ответ на Re: Combining metavariables and table names  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-general
On December 28, 2025 10:41:19 PM EST, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>"David G. Johnston" <david.g.johnston@gmail.com> writes:
>> On Sunday, December 28, 2025, H <agents@meddatainc.com> 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
wouldbe considered a request for an enhancement? 



В списке pgsql-general по дате отправления: