powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / UPDATE полей значениями из функции.
3 сообщений из 3, страница 1 из 1
UPDATE полей значениями из функции.
    #39030682
Sargos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для 8.4 уже поднимался аналогичный вопрос, но может быть что-нибудь изменилось с тех пор...
БД 9.2.1. (но можно и обновить)
В доках допускается вариант изменения вида
Код: sql
1.
UPDATE tbl SET (f1,f2,f3) = (f1+ex.f4,f2+ex.f5,f3+ex.f6) FROM ex WHERE ex.id=tbl.id


Есть ли способ вызова обеспечивающий следующее?
Код: sql
1.
UPDATE tbl SET (f1,f2,f3) = fun(f1,ex.f4,f2,ex.f5,f3,ex.f6) FROM ex WHERE ex.id=tbl.id


Тут fun для простоты просто суммирует поля передаваемых таблиц выдавая RECORD.
Никакие варианты, пришедшие в голову не прокатывают, не смотря на то что конструктор (,,) фактически собирает запись.
Был предложен вызов fun в области FROM, но может быть возможно какое-нибудь преобразование допускающее вызов fun в области SET?
...
Рейтинг: 0 / 0
UPDATE полей значениями из функции.
    #39030711
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SargosДля 8.4 уже поднимался аналогичный вопрос, но может быть что-нибудь изменилось с тех пор...
БД 9.2.1. (но можно и обновить)
В доках допускается вариант изменения вида
Код: sql
1.
UPDATE tbl SET (f1,f2,f3) = (f1+ex.f4,f2+ex.f5,f3+ex.f6) FROM ex WHERE ex.id=tbl.id


Есть ли способ вызова обеспечивающий следующее?
Код: sql
1.
UPDATE tbl SET (f1,f2,f3) = fun(f1,ex.f4,f2,ex.f5,f3,ex.f6) FROM ex WHERE ex.id=tbl.id


Тут fun для простоты просто суммирует поля передаваемых таблиц выдавая RECORD.
Никакие варианты, пришедшие в голову не прокатывают, не смотря на то что конструктор (,,) фактически собирает запись.
Был предложен вызов fun в области FROM, но может быть возможно какое-нибудь преобразование допускающее вызов fun в области SET?

Нет так нельзя в текущих версиях.
Скорее всего будет возможно в 9.5.
"
Allow to set multiple columns in an UPDATE to the result of a single subselect (Tom Lane)
This is accomplished using the syntax UPDATE tab SET (col1, col2, ...) = (SELECT ...).
"


--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
UPDATE полей значениями из функции.
    #39030714
Sargos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Жаль.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / UPDATE полей значениями из функции.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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