|
Странное поведение при update`е GTT
|
|||
---|---|---|---|
#18+
Столкнулся с непонятной проблемой. Есть временная таблица, допустим Код: sql 1. 2. 3. 4.
В хранимке эта таблица заполняется данными (insert), после чего обрабатывается (update и затем select), что то вроде Код: sql 1. 2.
Так вот, если сделать селект обновляемого поля Fld2 перед выполнением апдейта, то в for select попадают необновленные данные для Fld2, но обновленные для Fld1. WTF? Где новые версии записей поля Fld2? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2016, 16:44 |
|
Странное поведение при update`е GTT
|
|||
---|---|---|---|
#18+
NaumOffWTF? Полный лог из isql, плиз, а то непонятно кто на ком стоял. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2016, 16:47 |
|
Странное поведение при update`е GTT
|
|||
---|---|---|---|
#18+
NaumOffТак вот, если сделать селект обновляемого поля Fld2 перед выполнением апдейта, то в for select попадают необновленные данные для Fld2, но обновленные для Fld1. а чего это они должны обновляться перед выполнением update? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2016, 16:48 |
|
Странное поведение при update`е GTT
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Работаю в IbExpert`е. Как сделать лог в isql? Похоже баг какой то. Дело не в селекте. Пробовал сделать селект в переменную и апдейт поля по этой переменной. Не работает. Но если сделать апдейт тупо по литералу, все видится как надо. Совсем забыл. Firebird 2.5.5 Classic. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2016, 16:59 |
|
Странное поведение при update`е GTT
|
|||
---|---|---|---|
#18+
NaumOff, ты полный скрипт покажи. Скорее всего бага в твоём скрипте ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2016, 17:03 |
|
Странное поведение при update`е GTT
|
|||
---|---|---|---|
#18+
Симонов Дениса чего это они должны обновляться перед выполнением update? Не вижу обновления после update. Поле Fld2 не обновляется, если новое значение берется из подзапроса или переменной Например, так не работает: Код: sql 1. 2.
С литералом все обновляется. Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2016, 17:03 |
|
Странное поведение при update`е GTT
|
|||
---|---|---|---|
#18+
Симонов ДенисNaumOff, ты полный скрипт покажи. Скорее всего бага в твоём скрипте Да я все лишнее выкинул, скрипт простейший. Попробую сделать демку. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2016, 17:05 |
|
Странное поведение при update`е GTT
|
|||
---|---|---|---|
#18+
NaumOff, воспроизводимый пример в студию ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2016, 17:05 |
|
Странное поведение при update`е GTT
|
|||
---|---|---|---|
#18+
NaumOffНапример, так не работает: Первый update должен тупо обломиться с ошибкой "multiple rows in singleton select", поэтому до второго дело даже не доходит. Естественно такой блок и не может работать. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2016, 17:14 |
|
Странное поведение при update`е GTT
|
|||
---|---|---|---|
#18+
Симонов Денис, Вот блин:) Похоже это я где-то накосячил. В демке все работает как надо, буду копать свою хранимку. Прошу прощения за беспокойство. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2016, 17:16 |
|
Странное поведение при update`е GTT
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovПервый update должен тупо обломиться с ошибкой "multiple rows in singleton select", поэтому до второго дело даже не доходит. Естественно такой блок и не может работать. Нее, там агрегат, multiple rows не будет. Да и ошибке я был бы рад, хоть какая то ясность. А тут вроде работает, а результат не тот, что ожидается. Всю голову себе сломал, не вижу ошибок. Закомментил весь рабочий код, все равно литералом в лоб апдейтит, подзапросом или переменной нет. А ведь между ними в таком контексте нет никакой разницы. У переменной есть значение, подзапрос однозначно возвращает результат. В демке все работает. Вот набросал, примерно как все выглядит (только полей гораздо больше): Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2016, 17:51 |
|
Странное поведение при update`е GTT
|
|||
---|---|---|---|
#18+
А еще работает вот так: Код: sql 1. 2. 3. 4.
То есть переменная = литерал, затем апдейт. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2016, 17:57 |
|
Странное поведение при update`е GTT
|
|||
---|---|---|---|
#18+
NaumOff--а так нет А у меня твой пример работает: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
К чему бы это?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2016, 17:57 |
|
Странное поведение при update`е GTT
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovК чему бы это?.. К тому, что косяк в моей хранимке. Нашел ошибку в логике, цикл охватывал лишний блок, для подзапроса попросту уже не было нужных данных и в переменных для апдейта на самом деле сидели null`ы, а литерал он есть литерал, никакой мистики. Кстати, отладчик процедур IbExpert`a здорово подвел, не всегда правильно рассчитывает значения переменных. В сложных ситуациях на него не стоит полагаться. Огнептица как всегда работает железно. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2016, 18:39 |
|
|
start [/forum/topic.php?fid=40&gotonew=1&tid=1562270]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
70ms |
get topic data: |
9ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 184ms |
0 / 0 |