|
Синхронизация изменений данных в многопользов.базе
|
|||
---|---|---|---|
#18+
Уважаемые, здравствуйте! Наверняка кто-то сталкивался с проблемой и нашел метод решения Есть система, в которой несколько пользователей работают с одной базой данных (склад). Для операции списания для конкретного пользователя формируется список наличия товара на складе на определенное число. Этот пользователь сформировал данные на выполнение операции списания и запустил процедуру. Но в период между формированием списка остатков по складу и операцией списания другие пользователи добавляли/списывали товар. В результате - недостоверные данные для операции списания первым пользователем. Как данная проблема решается в общем? С уважением, Дмитрий ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2003, 15:41 |
|
Синхронизация изменений данных в многопользов.базе
|
|||
---|---|---|---|
#18+
С точки зрения складского учета, непонятна идея списания "каким-то" числом. В идеале, IMHO, отражение операций в БД должно быть довольно оперативным :) У меня система, прежде чем принять некую транзакцию, изменяющую остатки, проверяет, а не уйдут ли остатки "в минус", после нее. Если уйдут - не принимает. Т.е. остатки проверяются дважды, чтобы дать инфу пользователю, и чтобы проверить валидность того, что он сделал. По-моему, это довольно очевидно. Надо принять как догму, база должна постоянно находиться в "целостном" состоянии, воспринимать ее в "мгновенном" виде и работать соответственно ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2003, 16:14 |
|
Синхронизация изменений данных в многопользов.базе
|
|||
---|---|---|---|
#18+
Я считал и считаю, что остатки надо хранить в БД. Любая операция прихода/расхода должна независимо (через тригеры) менять эти остатки. На остаток вешается условие >=0. И все. БД сама будет следить за отсутствием минусов. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2003, 18:15 |
|
Синхронизация изменений данных в многопользов.базе
|
|||
---|---|---|---|
#18+
про timestamp почитай. это то что тебе надо. через него все и делается. когда ты посылаешь запрос на обновление ты посылаешь тот таймстамп который ты зачитал. далее СПшка сравнивает при апдейте если таймстамп совпадает с тем что в базе. если да, то никто ничего не менял, если нет, то райзишь ошибку и даешь пользователю думать что делать (типа: в базе произошли изменения. перекрыть его вашими изменениями или перечитать что там?) Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2003, 21:05 |
|
|
start [/forum/topic.php?fid=32&fpage=176&tid=1546765]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 167ms |
0 / 0 |