|
|
|
Работа с БД - изменение значения...
|
|||
|---|---|---|---|
|
#18+
Задача: найти в БД запись с "ID"=555 и увеличить значение поля "VALUE" (int) на +5. Т.е. что-то типа этого (без учёта проверок и т.п.) Код: plaintext 1. 2. 3. 4. 5. 6. Но! Есть одна проблема... Что, если "в перерыве" между этими двумя командами, кто-то на сервере изменит значение value этой записи? Например: - сначала там было "4" - программа прибавила ещё "5" - получила "9" (т.е. 4+5) - в это время кто-то на сервере увеличил значение до "7". - моя программа отправила на сервер значение "9". В результате на сервере теперь "10", а должно быть "12" (т.е. 7+5)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2006, 19:26:55 |
|
||
|
Работа с БД - изменение значения...
|
|||
|---|---|---|---|
|
#18+
А это вам надо читать про блокировки и транзакции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2006, 19:28:04 |
|
||
|
Работа с БД - изменение значения...
|
|||
|---|---|---|---|
|
#18+
А сразу UPDATE`ить нужную запись нельзя? ---------------------------------------- Артисты не приехали, приехали цыгане ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2006, 19:38:38 |
|
||
|
Работа с БД - изменение значения...
|
|||
|---|---|---|---|
|
#18+
А, я невнимательно прочитал... Мне показалось, между селектом и апдейтом есть какие-то действия пользователя. Если нужно просто увеличить значение value на 5 у записи с id=555 -- то надо это и делать: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2006, 19:41:48 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=33659561&tid=1476386]: |
0ms |
get settings: |
7ms |
get forum list: |
22ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
179ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 496ms |

| 0 / 0 |
