|
|
|
Значение поля до update
|
|||
|---|---|---|---|
|
#18+
Добрый день! Делаю update поля, перед commit хотелось бы вытянуть предыдущее значение, которое было изменено, но в select-е. Есть вариант заполнять временную таблицу,перед update-ом. Но это pl sql, а нужно в select-е. Суть в том что бы в промежуточном отчете сравнивать новое и старое значение(до update ), и после проверки юзер делает commit или rollback. Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 15:15 |
|
||
|
Значение поля до update
|
|||
|---|---|---|---|
|
#18+
gfhfyjzДелаю update поля... а нужно в select-е... Ты определился, где хочешь получить значения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 15:19 |
|
||
|
Значение поля до update
|
|||
|---|---|---|---|
|
#18+
gfhfyjz Есть вариант заполнять временную таблицу,перед update-ом. Но это pl sql, а нужно в select-е. в триггере? ps сначала сравнить "залоченное", потом изменить ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 15:22 |
|
||
|
Значение поля до update
|
|||
|---|---|---|---|
|
#18+
AlexFF__|, Да, в селекте. Но есть вариант в pl sql перед update-ом заполнить временную таблицу. т.е. Выполняется блок pl sql с update-ом, затем юзер открывает отчет в котором нужно отобразить предыдущее значение. и затем идет коммит или роллбэк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 15:23 |
|
||
|
Значение поля до update
|
|||
|---|---|---|---|
|
#18+
gfhfyjzAlexFF__|, Да, в селекте. Но есть вариант в pl sql перед update-ом заполнить временную таблицу. т.е. Выполняется блок pl sql с update-ом, затем юзер открывает отчет в котором нужно отобразить предыдущее значение. и затем идет коммит или роллбэк. select for update сравнений значений в отчете update+commit or rollback ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 15:29 |
|
||
|
Значение поля до update
|
|||
|---|---|---|---|
|
#18+
Stax, Триггер не трогаю. Выполняется обычный блок pl sql. И если значение "залоченное", как мне достучаться до нового значения которое должно было проставиться update-ом. Мне нужно сравнить новое и старое значение. например как в триггере есть :new и :old, вот мне тоже самое но в select-е. update dual set dummy = 'Y'; select :new.dummy,:old.dummy from dual ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 15:33 |
|
||
|
Значение поля до update
|
|||
|---|---|---|---|
|
#18+
AlexFF__|, select for update вернет только старое значение, а нужно одновременно и новое и старое. Приблизительно: update dual set dummy = 'Y'; select :new.dummy,:old.dummy from dual ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 15:37 |
|
||
|
Значение поля до update
|
|||
|---|---|---|---|
|
#18+
gfhfyjzAlexFF__|, select for update вернет только старое значение, а нужно одновременно и новое и старое. Приблизительно: update dual set dummy = 'Y'; select :new.dummy,:old.dummy from dual У тебя нет новых значений? =) Не нужно обновлять записи просто так. Решил - тогда обновляй. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 15:38 |
|
||
|
Значение поля до update
|
|||
|---|---|---|---|
|
#18+
gfhfyjzстарое значение(до update ) Код: plsql 1. Но скорее всего, ты выбрал неправильный путь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 15:38 |
|
||
|
Значение поля до update
|
|||
|---|---|---|---|
|
#18+
update dual set dummy = 'Y' returning :old.dummy Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 15:41 |
|
||
|
Значение поля до update
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovupdate dual set dummy = 'Y' returning :old.dummy А где это выполнять? В instead of триггере для вьюхи поверх dual-а? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 15:48 |
|
||
|
Значение поля до update
|
|||
|---|---|---|---|
|
#18+
gfhfyjzзатем юзер открывает отчет в котором нужно отобразить предыдущее значение commit не делай, оно само отобразится в другой сессии-то ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 15:50 |
|
||
|
Значение поля до update
|
|||
|---|---|---|---|
|
#18+
gfhfyjz, Издревле оптимисты действовали по сценарию: Код: plsql 1. 2. 3. Более модный вариант, включить rowdependencies и пользовать ora_rowscn. Для поизвращаться есть совсем альтернативно-одаренные способы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 15:53 |
|
||
|
Значение поля до update
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovupdate dual set dummy = 'Y' returning :old.dummy SQL) / SP2-0552: Bind variable "OLD" not declared. SQL) ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 16:01 |
|
||
|
Значение поля до update
|
|||
|---|---|---|---|
|
#18+
gfhfyjzСуть в том что бы в промежуточном отчете сравнивать новое и старое значение(до update ), и после проверки юзер делает commit или rollback. А зачем все делать в последний момент... Нет возможности отобразить старые данные до нажатия на кнопку перед изменением? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 16:01 |
|
||
|
Значение поля до update
|
|||
|---|---|---|---|
|
#18+
gfhfyjzStax, Триггер не трогаю. Выполняется обычный блок pl sql. И если значение "залоченное", как мне достучаться до нового значения которое должно было проставиться update-ом. Мне нужно сравнить новое и старое значение. например как в триггере есть :new и :old, вот мне тоже самое но в select-е. update dual set dummy = 'Y'; select :new.dummy,:old.dummy from dual старое значения не в триггере не знаю как получить если табличка Ваша, можно в таблице сохранять в доп. полях old_xxx (чуть подгрузит ну и фиг) update t set old_xxx=xxx, xxx=new_v .... если система не для полета на Марс с Восточного и допускает вольности можно прикрутить "флашбек" или читать в автономке, получим "примерно" старые значения, но оно Вам надо мне кажется подход не православный сначало надо 1) select for update (олд значения) 2) сравниваем с новыми (Вы ж их знаете) 3) если подходит update where ...+commit, не подходит коммит без update 4) rollback токо в случае сбоя ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 16:16 |
|
||
|
Значение поля до update
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 16:31 |
|
||
|
Значение поля до update
|
|||
|---|---|---|---|
|
#18+
Все выполняется в одной сессии. Контролировать перед изменение не получится, так настроена система. returning не подходит, потому что используется в pl sql, а нужно в чистом sql, потому что отчет строится отдельно без использования pl sql Staxмне кажется подход не православный сначало надо 1) select for update (олд значения) 2) сравниваем с новыми (Вы ж их знаете) 3) если подходит update where ...+commit, не подходит коммит без update 4) rollback токо в случае сбоя По второму пункту, новое значение знаю только когда будет update. в отчет не передается параметр нового значение. По комментариям понимаю, что от варианта с временной таблицей не обойтись. Всем спасибо;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 16:51 |
|
||
|
Значение поля до update
|
|||
|---|---|---|---|
|
#18+
gfhfyjzПо комментариям понимаю, что от варианта с временной таблицей не обойтись.Ни хера ты не понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 17:09 |
|
||
|
Значение поля до update
|
|||
|---|---|---|---|
|
#18+
gfhfyjz, заполнение временной, всеравно на какой-то момент времени тоесть время перед update известно, можно флашбек использовать Код: plsql 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. ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 17:37 |
|
||
|
Значение поля до update
|
|||
|---|---|---|---|
|
#18+
ElicgfhfyjzПо комментариям понимаю, что от варианта с временной таблицей не обойтись.Ни хера ты не понял. То что я не понял уже догадался, на Ваш коммент не обратил внимание. Раньше такой функционал не использовал, по этому не придал значению. Спасибо. Stax, отдельное спасибо за подробное объяснение. То что доктор прописал!!!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 18:18 |
|
||
|
Значение поля до update
|
|||
|---|---|---|---|
|
#18+
gfhfyjzТо что доктор прописал!!!!!! Вряд ли доктор такое прописал бы... Если уж идти на такие извраты - то хотя бы as of scn, полученный непосредственно перед update, а уж никак не as of timestamp. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 22:26 |
|
||
|
Значение поля до update
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousВряд ли доктор такое прописал бы...Ничего, от побочных эффектов доктор пропишет эксклюзивную блокировку на таблицу и dbms_lock.sleep(3). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 22:48 |
|
||
|
Значение поля до update
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousas of scn, полученный непосредственно перед update, а уж никак не as of timestamp.+ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 07:56 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39564489&tid=1884773]: |
0ms |
get settings: |
5ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
155ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 428ms |

| 0 / 0 |
