|
|
|
Согласованность значений переменных до и после UPDATE внутри функции
|
|||
|---|---|---|---|
|
#18+
Простой, казалось бы вопрос. Перед тем как изменить баланс на аккаунте, я запоминаю значение баланса (до его изменения) в переменную v_a1 Также записываю в переменную v_a2 значение баланса, которое должно получиться. После изменения баланса считываю его изменившееся по факту значение в v_a3. Вопрос - может ли быть такое , что v_a2 не равно v_a3 ? (т.е. попадём ли мы в блок обработки ошибки с кодом = 4 ?) Эта функция будет запускаться одновременно с разных компов многими юзерами, изменяющими один и тот же баланс (одинаковый i_id_balance) Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2016, 10:43 |
|
||
|
Согласованность значений переменных до и после UPDATE внутри функции
|
|||
|---|---|---|---|
|
#18+
Арктур Менгск, Может. Такая аномалия называется “nonrepeatable read”. Почитайте про уровни изоляции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2016, 10:47 |
|
||
|
Согласованность значений переменных до и после UPDATE внутри функции
|
|||
|---|---|---|---|
|
#18+
Арктур МенгскПростой, казалось бы вопрос. Перед тем как изменить баланс на аккаунте, я запоминаю значение баланса (до его изменения) в переменную v_a1 -- а зачем вы это делаете ? Арктур МенгскТакже записываю в переменную v_a2 значение баланса, которое должно получиться. -- а зачем вы это делаете ? Арктур МенгскПосле изменения баланса считываю его изменившееся по факту значение в v_a3. -- а зачем вы это делаете ? Арктур МенгскВопрос - может ли быть такое , что v_a2 не равно v_a3 ? (т.е. попадём ли мы в блок обработки ошибки с кодом = 4 ?) -- если вас интересует, будет ли в read commited честный инкрементальный бекап -- да, будет. будет ли при этом соблюдаться repeatable--read по балансу )если вы не смените сами уровень изоляции) -- нет, не будет. или смените сами уровень изоляции Код: sql 1. или делайте Код: sql 1. -- и имейте очередь, вместо ошибок изоляции. или интересуйтесь чем то вида Код: sql 1. 2. -- но тогда сравнение теряет смысл -- инкрементирование атомарно. т.е. если делта у вас исчисляется в зависимости от величины текущего баланса -- то надо либо лочить (в тот момент, где впервые вяжетесь на величину) либо сменить уровень изоляции. если не зависит -- сама постановка задачи излишня -- т.к. инкрементирование атомарно (на нем -- очередь возникает-- все с номерами от 2 и выше ждут коммита первого -- до того как им отдадут запись на растерзание). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2016, 12:43 |
|
||
|
Согласованность значений переменных до и после UPDATE внутри функции
|
|||
|---|---|---|---|
|
#18+
qwwq-- если вас интересует, будет ли в read commited честный инкрементальный бекап -- да, будет. эхолалия детектид читать "UPDATE". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2016, 12:45 |
|
||
|
Согласованность значений переменных до и после UPDATE внутри функции
|
|||
|---|---|---|---|
|
#18+
qwwqили смените сами уровень изоляции Код: sql 1. Заодно не подскажете, можно ли использовать эту конструкцию внутри функции (на языке PLPGSQL) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2016, 07:58 |
|
||
|
Согласованность значений переменных до и после UPDATE внутри функции
|
|||
|---|---|---|---|
|
#18+
Арктур Менгскqwwqили смените сами уровень изоляции Код: sql 1. Заодно не подскажете, можно ли использовать эту конструкцию внутри функции (на языке PLPGSQL) ?никак от слова "совсем" читайте, и обрящете http://www.postgresql.org/docs/current/static/sql-begin.html http://www.postgresql.org/docs/9.5/static/transaction-iso.html ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2016, 08:35 |
|
||
|
Согласованность значений переменных до и после UPDATE внутри функции
|
|||
|---|---|---|---|
|
#18+
qwwqникак от слова "совсем" а тогда как применить ваш совет, вы же видите что я пишу именно функцию ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2016, 11:24 |
|
||
|
Согласованность значений переменных до и после UPDATE внутри функции
|
|||
|---|---|---|---|
|
#18+
Арктур Менгскqwwqили смените сами уровень изоляции Код: sql 1. Заодно не подскажете, можно ли использовать эту конструкцию внутри функции (на языке PLPGSQL) ? у тебя неправильно делается твоя проверка. Она вообще бессмысленная. Выкинь её. Оставь один апдейт в функции и живи спокойно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2016, 11:28 |
|
||
|
Согласованность значений переменных до и после UPDATE внутри функции
|
|||
|---|---|---|---|
|
#18+
Арктур Менгскqwwqникак от слова "совсем" а тогда как применить ваш совет, вы же видите что я пишу именно функцию ? прости, мальчек я думал ты решаешь проблему а ты просто пописать вышел, функцею абазнался ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2016, 11:45 |
|
||
|
Согласованность значений переменных до и после UPDATE внутри функции
|
|||
|---|---|---|---|
|
#18+
Ivan DurakАрктур Менгскпропущено... Заодно не подскажете, можно ли использовать эту конструкцию внутри функции (на языке PLPGSQL) ? у тебя неправильно делается твоя проверка. Она вообще бессмысленная. Выкинь её. Оставь один апдейт в функции и живи спокойно он может исчислять дельту, как F(текущего балланса) -- тогда ему самому надо организовывать очередь в точке .где _вычитывается_ текущий баланс для определения дельты, а не ждать, пока очередь возникнет сама, в точке, где этот баланс изменяется . если же дельта не зависит ни от чего -- то то, что он делает лишние движения тазовой костью ему давно рассказали -- но оно не вкуривает. ибо нечем. печалька. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2016, 11:49 |
|
||
|
Согласованность значений переменных до и после UPDATE внутри функции
|
|||
|---|---|---|---|
|
#18+
qwwqIvan Durakпропущено... у тебя неправильно делается твоя проверка. Она вообще бессмысленная. Выкинь её. Оставь один апдейт в функции и живи спокойно он может исчислять дельту, как F(текущего балланса) -- тогда ему самому надо организовывать очередь в точке .где _вычитывается_ текущий баланс для определения дельты, а не ждать, пока очередь возникнет сама, в точке, где этот баланс изменяется . если же дельта не зависит ни от чего -- то то, что он делает лишние движения тазовой костью ему давно рассказали -- но оно не вкуривает. ибо нечем. печалька. я его насквозь вижу с помощью хрустального шара - дельту он там не считает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2016, 12:59 |
|
||
|
Согласованность значений переменных до и после UPDATE внутри функции
|
|||
|---|---|---|---|
|
#18+
qwwq, ты не понял, мне нужно вывести юзеру инфу - с какого значения и на какое именно значение он изменил баланс своей транзакцией ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2016, 13:01 |
|
||
|
Согласованность значений переменных до и после UPDATE внутри функции
|
|||
|---|---|---|---|
|
#18+
Арктур Менгск с какого значения и на какое именно значение он изменил баланс своей транзакциейлинейные уравнения с одной неизвестной проходят в младших классах средней школы. решение не определено только для случая умножения на 0. если не учился в школе на арифметика и где-нибудь не в школе на sqlника, почитай про селект фор упдате. но в более сложных случаях (инсерт) оно не поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2016, 13:11 |
|
||
|
Согласованность значений переменных до и после UPDATE внутри функции
|
|||
|---|---|---|---|
|
#18+
p2.линейные уравнения с одной неизвестной проходят в младших классах средней школыя где-то писал, что не знаю как решить линейное уравнение с одной неизвестной? я всего лишь объяснял, почему нужно получить величину баланса сразу после UPDATE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2016, 13:14 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39146360&tid=1997525]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
162ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 209ms |
| total: | 475ms |

| 0 / 0 |
