SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Firebird, HQbird, InterBase » Простой апдейт
Простой апдейт [сообщение #1881] Tue, 21 March 2023 19:01 Переход к следующему сообщению
DarkMaster в настоящее время не в онлайне  DarkMaster
Сообщений: 35
Зарегистрирован: August 2022
Member
Други, напомните плиз.

Есть апдейт такого вида:

update table1
set old_field=field_value,
field_value=:new_field_value
where id=:id;

Вопрос собственно в чем - у меня в old_field сохранится старое значение из field_value? Гложат меня смутные сомнения - что-то когда-то давно такое было вокруг этого.... Может ну его и триггером сделать?
Re: Простой апдейт [сообщение #1882 является ответом на сообщение #1881] Tue, 21 March 2023 19:33 Переход к предыдущему сообщениюПереход к следующему сообщению
hvlad в настоящее время не в онлайне  hvlad
Сообщений: 364
Зарегистрирован: August 2022
Senior Member
FB 2.5 firebird.conf:

# Prior to Firebird 2.5 the SET clause of the UPDATE statement assigned
# columns in the user-defined order with the NEW column values being
# immediately accessible to the subsequent assignments. This did not
# conform to the SQL standard. Starting with Firebird 2.5, only OLD column
# values are accessible to all the assignments of the SET clause.
#
# Example of the old vs new behaviour:
#
# UPDATE T SET A = B, B = A
# old result: A gets equal to B, B doesn't change
# new result: A and B get their values exchanged
#
# Change this configuration option to 1 (true) only if your SQL code relies
# on the legacy semantics of the SET clause. It's provided as a temporary
# solution for backward compatibility issues and will be deprecated in
# future Firebird versions.
#
# Type: boolean
#
#OldSetClauseSemantics = 0

Начиная с FB3 этого пар-ра нет, всё по стандарту.
Re: Простой апдейт [сообщение #1883 является ответом на сообщение #1882] Tue, 21 March 2023 20:33 Переход к предыдущему сообщениюПереход к следующему сообщению
DarkMaster в настоящее время не в онлайне  DarkMaster
Сообщений: 35
Зарегистрирован: August 2022
Member
Ок, спасибо. Сделаю триггером, чтобы не парить мозг Smile
Re: Простой апдейт [сообщение #1884 является ответом на сообщение #1883] Tue, 21 March 2023 22:53 Переход к предыдущему сообщениюПереход к следующему сообщению
Старый Плюшев в настоящее время не в онлайне  Старый Плюшев
Сообщений: 95
Зарегистрирован: August 2022
Географическое положение: Ленинград
Member
По-моему тут не об этом. old_field получит значение field_value которое было до выполнения оператора, field_value спокойно получит "внешнее" значение. Вот если бы old_field после присвоения использовалось бы в том же операторе в надежде что там уже "новое старое" значение, тады да, ой.
https://www.youtube.com/watch?v=JLgjVudb_RM
Re: Простой апдейт [сообщение #1887 является ответом на сообщение #1884] Wed, 22 March 2023 11:54 Переход к предыдущему сообщению
DarkMaster в настоящее время не в онлайне  DarkMaster
Сообщений: 35
Зарегистрирован: August 2022
Member
Дед, спасибо - именно об этом и велась речь. Но все равно переделал - во избежание Smile
Предыдущая тема: ругательно-восхвалятельная тема
Следующая тема: Миграция с FB2.0.7 на FB2.5.9
Переход к форуму:
  


Текущее время: Sun Dec 22 05:30:38 GMT+3 2024

Общее время, затраченное на создание страницы: 0.00659 секунд