powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Update через ранее обновленное поле
2 сообщений из 2, страница 1 из 1
Update через ранее обновленное поле
    #39673300
A-MaR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гарантирована ли корректная работа такой конструкции, или это не есть правильно:
Код: sql
1.
2.
3.
4.
5.
6.
7.
UPDATE ch_chek_items cci      
  JOIN prod_prices2 pp2 on(cci.ProductId = pp2.ProductId and pp2.PriceLevelId = IN_PriceLevelId)      
SET cci.ItemPriceClear = pp2.Price,      
    cci.ItemSumClear = cci.ItemPriceClear * cci.ItemCount,      
    cci.ItemPriceWithDisc = cci.ItemPriceClear,      
    cci.ItemSumWithDisc = cci.ItemSumClear      
WHERE cci.ChekId = IN_ChekId  


т.е. когда вычисляется первое поле cci.ItemPriceClear, а далее от него пересчитываются остальные?
При отладке работало как часы, но смотрю базу с клиентской машины - и есть основания предполагать, что в 99% все работает правильно, а в оставшемся 1% обновляется только первое поле cci.ItemPriceClear, а все остальные, пересчитываемые от него - нет. Однозначно сказать, что это именно так, не могу, т.к. это часть процедуры, и, согласно условиям, все поля, кроме первого cci.ItemPriceClear, далее пересчитываются повторно.

В данном случае, конечно, можно легко заменить все cci.ItemPriceClear на pp2.Price, но подобная конструкция используется также в другом виде, где условно cci.ItemPriceClear считается через довольно сложную функцию, а все остальные аналогично от этого поля, и вызывать одну и ту же функцию несколько раз было бы затратно. Стоит ли разделить такой Update на два?
...
Рейтинг: 0 / 0
Update через ранее обновленное поле
    #39673313
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
A-MaRвычисляется первое поле cci.ItemPriceClear, а далее от него пересчитываются остальные?
Порядок вычисления выражений выходного набора документацией не установлен. Так что всё от лукавого, и в любой момент 99% могут смениться тоскливым нулём.

В данном же конкретном случае, когда нет никаких вычислений этого самого абы вычисляемого поля, гораздо проще тупо везде вместо него использовать поле, из которого взято его абы вычисленное значение.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Update через ранее обновленное поле
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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