Re: SELECT * in a view
От | Merlin Moncure |
---|---|
Тема | Re: SELECT * in a view |
Дата | |
Msg-id | p2qb42b73151004211119ged34c9f7rb76292948f5b6163@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: SELECT * in a view (Andreas Kretschmer <akretschmer@spamfence.net>) |
Список | pgsql-general |
On Wed, Apr 21, 2010 at 2:14 PM, Andreas Kretschmer <akretschmer@spamfence.net> wrote: > Tom Lane <tgl@sss.pgh.pa.us> wrote: > >> > That's not what I want. That means that if old_view changes, new_view >> > will not reflect the changes. Is there any way to get new_view to >> > automatically include all fields from old_view, no matter how many or >> > how few fields there are? >> >> No. This behavior is specifically required by the SQL standard: the >> result rowtype of a view is determined when the view is created, and >> is not supposed to change when underlying tables have columns added. >> That's why we expand * when the view is created. > > Right, and additional, don't use select *, in particular production > code. I don't agree. This entirely depends on context. It is completely reasonable to want to be able expand a composite type without explicitly listing the fields, or do other things: select foo.* from foo join bar on ... -- what's wrong with this? select (v).* from (select aggfunc(foo) as v from foo where ...) -- or this? merlin
В списке pgsql-general по дате отправления: