powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Update использование новых значений
9 сообщений из 9, страница 1 из 1
Update использование новых значений
    #39798026
Riss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день Господа.

По руководству Update


Разрешено использовать имена столбцов в выражениях справа. При этом использоваться
будет всегда старое значение столбца, даже если присваивание этому столбцу уже произошло
ранее в перечислении SET.

Примечание
Так было не всегда. До версии 2.5, столбцы сразу получали новые значения. Это являлось
нестандартным поведением, и поэтому было изменено в версии 2.5.
Однако, для восстановления совместимости со старыми версиями в firebird.conf
существует параметр OldSetClauseSemantics, который, будучи установленным в 1,
восстанавливает старое поведение. Этот параметр в будущем будет удален.


Раз это нестандартное поведение, то думаю скорее всего есть какая то альтернатива - как использовать новые значения? Не проводить же Update несколько раз?
Или, если нельзя, то как Вы обходите этот момент?
Просветите, пожалуйста.

Заранее благодарен советам.
...
Рейтинг: 0 / 0
Update использование новых значений
    #39798050
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Riss,

во первых это примечание касается вот таких случаев

Код: sql
1.
2.
3.
UPDATE T
SET A = A + 1, B = A + 3
WHERE ...



Однако есть ещё штука касающаяся стабильности курсора, но это начиная с 3.0.
Но множественный апдейт в рамках курсора одной и той же записи это само по себе криво.

Можешь привести пример, когда прям никак не получается переделать свой запрос?
...
Рейтинг: 0 / 0
Update использование новых значений
    #39798059
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисМожешь привести пример, когда прям никак не получается переделать свой запрос?

Ставлю на то, что у него "set a=(ахренительный подзапрос), b=a+(второй ахренительный
подзапрос)".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Update использование новых значений
    #39798063
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

выкинуть и переписать на merge
...
Рейтинг: 0 / 0
Update использование новых значений
    #39798068
Riss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Раз "нестандартное поведение", то это понятно, что криво, но этот случай меня и интересует... Не важно - насколько "ахренительный подзапрос". Создаю n таблиц и к ним m полей и там вложенности расчетов. До 2.5 работает безотказно.
Я рассуждаю, что раз этот метод крив, то должен быть нормальный метод. В чем он?
...
Рейтинг: 0 / 0
Update использование новых значений
    #39798072
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RissВ чем он?

Вторая нормальная форма. Запрет на поля, являющиеся функцией других полей.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Update использование новых значений
    #39798076
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Riss,

я не понимаю что ты хочешь услышать. Как абстрактно решается абстрактная задача?
Не у одного тебя существуют сложные расчёты, и все как-то их делают в рамках правил работы с сервером.
Если мне нужен супер сложный апдейт на основе запроса с джойнами, то я использую MERGE, либо UPDATE по курсору
...
Рейтинг: 0 / 0
Update использование новых значений
    #39798077
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rissтам вложенности расчетов

Выноси расчёт в before-триггера.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Update использование новых значений
    #39798085
Riss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо большое за советы господа)))
Есть информация к размышлению ... Опробую варианты ))
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Update использование новых значений
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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