Модераторы: Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> блокирующие транзакции в FireBird, не понимаю.... объясниете.... 
V
    Опции темы
sergey_85
Дата 2.3.2009, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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.
PM MAIL   Вверх
Akella
Дата 2.3.2009, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(sergey_85 @  2.3.2009,  10:23 Найти цитируемый пост)
. если было 50 ед. 


Цитата(sergey_85 @  2.3.2009,  10:23 Найти цитируемый пост)
дин польз. забрал все 50


Цитата(sergey_85 @  2.3.2009,  10:23 Найти цитируемый пост)
а 2 в тоже время снял 20


ты по-человечески объяснить smile  а то забрал... снял....
ПЕШИ ПО РУССКЕ
PM MAIL   Вверх
sergey_85
Дата 2.3.2009, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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.
PM MAIL   Вверх
Deniz
Дата 2.3.2009, 12:22 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



sergey_85, обычно кол-во считается "на лету", т.е. остаток + приход - расход.
Если все же хочешь блокировать записи читай ibase.ru на тему select ... for update with lock
Транзакции в InterBase и Firebird
Как заблокировать запись в InterBase/Firebird


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
sergey_85
Дата 2.3.2009, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 445
Регистрация: 17.4.2007
Где: Россия, Челябинск

Репутация: нет
Всего: 1



спасибо, но здесь такая ситуция,  данные идут из 1С и чтоб не париться с синхронизацией проще сделать колонку кол-во


--------------------
A good design always pays off.
PM MAIL   Вверх
Deniz
Дата 3.3.2009, 06:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Цитата(sergey_85 @  3.3.2009,  01:54 Найти цитируемый пост)
данные идут из 1С и чтоб не париться с синхронизацией проще сделать колонку кол-во 
как раз с колонкой будет больше проблем.
В любом случае "снятие" лучше делать в ХП в отдельной короткой транзакции, с проверкой наличия и т.д.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.0442 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.