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 по дате отправления: