powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / UPDATE строки по Составному типу из pg_type
4 сообщений из 4, страница 1 из 1
UPDATE строки по Составному типу из pg_type
    #39567289
Kyplon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.
Предположим, есть таблица 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?
...
Рейтинг: 0 / 0
UPDATE строки по Составному типу из pg_type
    #39567811
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kyplon,

https://www.postgresql.org/docs/current/static/sql-update.html
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
[ WITH [ RECURSIVE ] with_query [, ...] ]
UPDATE [ ONLY ] table_name [ * ] [ [ AS ] alias ]
    SET { column_name = { expression | DEFAULT } |
          ( column_name [, ...] ) = [ ROW ] ( { expression | DEFAULT } [, ...] ) |
          ( column_name [, ...] ) = ( sub-SELECT )
        } [, ...]
    [ FROM from_list ]
    [ WHERE condition | WHERE CURRENT OF cursor_name ]
    [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]

--> для "короче" пишите хранимку/препаред.

обычно вопрос актуален в разрезе не "короче" а в разрезе автомасисськи--"бездинамо" (для писания всяческих обобщенных механизмов типа триггерных хранимок и т.п.). хороших решений не имеет. пишите генераторы.

я вот думаю, нужно ли мне хотеть в "from_list" возможность lateral от апдейтуемого. пока получается, что надо. или алиас для "expression"|"sub-SELECT" спускать в "WHERE condition". иначе как--то неудобно "SET = гроб WHERE F(гроб)". и в планах гробы с обоих сторон. сколько себя помню -- было неудобно.
...
Рейтинг: 0 / 0
UPDATE строки по Составному типу из pg_type
    #39568042
Kyplon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Благодарю за пояснения.
На самом деле добавление, обновление и удаление = 3 функции, к которым обращается веб-приложение.
Правильно ли я понимаю: лучше каждый раз создавать соединение с postgresql для выполнения функции и после выполнения закрывать?
Пример: в веб-приложении пользователь заполнил форму и нажал кнопку Записать, которая создает подключение к postgresql, записывает строку и закрывает подключение.
Пользуюсь Npgsql 3.2.6.
...
Рейтинг: 0 / 0
UPDATE строки по Составному типу из pg_type
    #39568109
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kyplon<>
Правильно ли я понимаю: лучше каждый раз создавать соединение с postgresql для выполнения функции и после выполнения закрывать?
<>
зачем ?

см "пул" /"пулер" / PgBouncer и т.п.

к тому же препареды как--то разумнее в долгих соединениях.

вот открытую клиентскую транзакцию держать -- это не самый лучший паттерн, если есть возможность от него уйти.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / UPDATE строки по Составному типу из pg_type
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]