Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / про последовательность UPDATE одного поля в операторах UPDATE/MERGE / 11 сообщений из 11, страница 1 из 1
01.02.2019, 14:29
    #39768213
Customer Old
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про последовательность UPDATE одного поля в операторах UPDATE/MERGE
Столкнулся с непонятной для меня ситуацией при использовании subj.
Вводные:
Код: plsql
1.
2.
create table table1(id char(1), val1 integer, val2 integer);
insert into table1 values ('A', 0, 0);

а теперь 2 теста:
на UPDATE:
Код: plsql
1.
2.
3.
update table1
   set val1 = val1 + 1,
       val2 = val1 + 2;

на MERGE:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
merge into table1 t1
using (
        select 'A' as id, 1 as val1 from rdb$database
        union all
        select 'A' as id, 2 as val1 from rdb$database
      ) t2
  on t1.id = t2.id
  when matched then update
  set t1.val1 = t1.val1 + t2.val1;

результат меня удивил.
Кто скажет - что должно получиться и почему?
...
Рейтинг: 0 / 0
01.02.2019, 14:46
    #39768231
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про последовательность UPDATE одного поля в операторах UPDATE/MERGE
Customer Old,

потому что не надо в мерже связывать по не уникальным полям
...
Рейтинг: 0 / 0
01.02.2019, 14:58
    #39768242
Customer Old
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про последовательность UPDATE одного поля в операторах UPDATE/MERGE
Симонов Денис,
не придирайтесь. считайте, что Id NOT NULL и PK есть.
по существу есть мысли? вы ведь поняли смысл вопроса?
...
Рейтинг: 0 / 0
01.02.2019, 15:05
    #39768248
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про последовательность UPDATE одного поля в операторах UPDATE/MERGE
Customer Oldпо существу есть мысли? вы ведь поняли смысл вопроса?
Нет. Есть некий кривой тест и "удивительные" результаты, которых не видно.
...
Рейтинг: 0 / 0
01.02.2019, 15:09
    #39768252
Старый плюшевый мишка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про последовательность UPDATE одного поля в операторах UPDATE/MERGE
Это проявление принципиальности подхода к стабильности курсора было одной из причин моей остановки в шествии вместе с FB на полуторке. Слишком дох было перепаивать (С).
...
Рейтинг: 0 / 0
01.02.2019, 15:10
    #39768254
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про последовательность UPDATE одного поля в операторах UPDATE/MERGE
Customer Old,

по существу, по стандарту merge должен ругаться при затрагивании одной и той же записи более одного раза. В ФБ такой проверки нет.

Кроме того результат может зависеть от версии ФБ, которую ты не озвучил
...
Рейтинг: 0 / 0
01.02.2019, 15:23
    #39768262
Customer Old
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про последовательность UPDATE одного поля в операторах UPDATE/MERGE
Симонов Денис,
результат может зависеть от версии ФБВот!
Я, наверное, слишком долго спал и отстал от жизни. А где прочитать про то, когда поведение подобных операторов поменялось?
...
Рейтинг: 0 / 0
01.02.2019, 15:27
    #39768265
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про последовательность UPDATE одного поля в операторах UPDATE/MERGE
Customer Old,

про UPDDATE читай в Release Notes 2.5
про стабильность курсора (все модифицирующие операторы) в Release Notes 3.0
...
Рейтинг: 0 / 0
01.02.2019, 15:40
    #39768277
Customer Old
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про последовательность UPDATE одного поля в операторах UPDATE/MERGE
Симонов Денис,

Я, наверное, очень нудный...
Сходу, открыв Release Notes 2.5, не нашел про изменение поведения UPDATE.
Нельзя ли ткнуть меня в это место? И сразу 2-й вопрос (я не слишком много хочу?): есть ли там место, где собраны ВСЕ изменения поведения операторов DML?
...
Рейтинг: 0 / 0
01.02.2019, 15:53
    #39768289
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про последовательность UPDATE одного поля в операторах UPDATE/MERGE
...
Рейтинг: 0 / 0
01.02.2019, 17:10
    #39768368
Customer Old
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про последовательность UPDATE одного поля в операторах UPDATE/MERGE
Симонов Денис,

Спасибо!
Теперь будем думать...
Как отыскать все такие места в коде...
Печаль...
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / про последовательность UPDATE одного поля в операторах UPDATE/MERGE / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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