|
UPDATE строки по Составному типу из pg_type
|
|||
---|---|---|---|
#18+
Доброго времени суток. Предположим, есть таблица t, у которой есть очень много атрибутов: а1, а2, а3, ..., а50. Как известно при создании таблицы автоматически создается Составной тип, представляющий структуру строки таблицы и хранящийся в pg_type. Достаточно удобен INSERT, добавим строку с какими-нибудь данными: INSERT INTO t VALUES ('1',TRUE,'asdf',...,'10:00:00'); В данном случае было перечислено 50 атрибутов. А теперь попробуем обновить эту строку: UPDATE t SET (a1,a2,a3,...,a50) = ('2',FALSE,'fdsa',...,'07:00:00') WHERE id = '1'; И тут возникает вопрос: зачем перечислять атрибуты таблицы t после SET, если есть составной тип t? Можно ли как-то короче оформить обновление строки таблицы, например, как в INSERT? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2017, 16:12 |
|
UPDATE строки по Составному типу из pg_type
|
|||
---|---|---|---|
#18+
Kyplon, https://www.postgresql.org/docs/current/static/sql-update.html Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
--> для "короче" пишите хранимку/препаред. обычно вопрос актуален в разрезе не "короче" а в разрезе автомасисськи--"бездинамо" (для писания всяческих обобщенных механизмов типа триггерных хранимок и т.п.). хороших решений не имеет. пишите генераторы. я вот думаю, нужно ли мне хотеть в "from_list" возможность lateral от апдейтуемого. пока получается, что надо. или алиас для "expression"|"sub-SELECT" спускать в "WHERE condition". иначе как--то неудобно "SET = гроб WHERE F(гроб)". и в планах гробы с обоих сторон. сколько себя помню -- было неудобно. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2017, 16:46 |
|
UPDATE строки по Составному типу из pg_type
|
|||
---|---|---|---|
#18+
Благодарю за пояснения. На самом деле добавление, обновление и удаление = 3 функции, к которым обращается веб-приложение. Правильно ли я понимаю: лучше каждый раз создавать соединение с postgresql для выполнения функции и после выполнения закрывать? Пример: в веб-приложении пользователь заполнил форму и нажал кнопку Записать, которая создает подключение к postgresql, записывает строку и закрывает подключение. Пользуюсь Npgsql 3.2.6. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2017, 00:38 |
|
UPDATE строки по Составному типу из pg_type
|
|||
---|---|---|---|
#18+
Kyplon<> Правильно ли я понимаю: лучше каждый раз создавать соединение с postgresql для выполнения функции и после выполнения закрывать? <> зачем ? см "пул" /"пулер" / PgBouncer и т.п. к тому же препареды как--то разумнее в долгих соединениях. вот открытую клиентскую транзакцию держать -- это не самый лучший паттерн, если есть возможность от него уйти. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2017, 09:32 |
|
|
start [/forum/topic.php?fid=53&fpage=62&tid=1996049]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 150ms |
0 / 0 |