![]() |
|
Модераторы: Akella |
![]()
|
|
| sergey_85 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 445 Регистрация: 17.4.2007 Где: Россия, Челябинск Репутация: нет Всего: 1 |
Привет!
Естьтаблица товары в ней поле кол-во, это поле постоянно изменяют несколько юзеров (могут и одновременно) как сделать так чтобы информация была целостной в этом поле, т.е. если было 50 ед. товара один польз. забрал все 50, а 2 в тоже время снял 20, то получиться что запишется значение 50-20, что неверно. Каакую запустить транзакцию и с какими параметрами? Испльзую FireBird 2.1 Это сообщение отредактировал(а) sergey_85 - 2.3.2009, 10:24 -------------------- A good design always pays off. |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 20 Всего: 329 |
||||
|
||||
| sergey_85 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 445 Регистрация: 17.4.2007 Где: Россия, Челябинск Репутация: нет Всего: 1 |
по русски:
2 юзера, первый начал редактировать (он получил кол-во из БД = 50), далее начал 2 редактировать (он тоже получил кол-во = 50 из БД), 1 юзер, пошел на обед, не стал делать апдейт записи, а 2 снял 20 единиц (50 - 20 = 30) и обновил запись, теперь в базе кол-во = 30, 1 юзер пришел с обеда и тоже решил обновить эту запись (у него их все еще 50!!!), он снял всего лишь 5 единиц (50 - 5 = 45), теперь он пишет в базу значение, получиться так, что он затрет изменения 2 пользователя и кол-во в БД будет неверно (станет - 45, а должно быть - 25)!!! Как решить? -------------------- A good design always pays off. |
|||
|
||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
sergey_85, обычно кол-во считается "на лету", т.е. остаток + приход - расход.
Если все же хочешь блокировать записи читай ibase.ru на тему select ... for update with lock Транзакции в InterBase и Firebird Как заблокировать запись в InterBase/Firebird -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
| sergey_85 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 445 Регистрация: 17.4.2007 Где: Россия, Челябинск Репутация: нет Всего: 1 |
спасибо, но здесь такая ситуция, данные идут из 1С и чтоб не париться с синхронизацией проще сделать колонку кол-во
-------------------- A good design always pays off. |
|||
|
||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
В любом случае "снятие" лучше делать в ХП в отдельной короткой транзакции, с проверкой наличия и т.д. -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
![]()
|
| Правила форума "Interbase" | |
|
|
Обязательно указание: 1. Версию InterBase (Firebird, Yaffil) 2. Способа доступа (ADO, BDE, IBX и т.д.)
Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Firebird, Interbase | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |