Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Изоляция транзакции  [new]
Lamer666
Member

Откуда:
Сообщений: 83
Добрый день, уважаемые.
Подскажите пожалуйста как решить следующую задачу: например есть кинозал с N местами. С таблицей мест работают одновременно 3 пользователя + пользователи через интернет.
Пользователь начинает резервировать место, и выбирает определеный номер (условно i)
Как обеспечить до окончания процессарезервировани сохранность данного места за покупателем (а в случае отказа или таймаута освободить это место), что бы например другой пользователь видел, что место i в процессе регистрации и не може быть начать резервировани?
Заранее пемного благодарен.
20 май 17, 13:34    [20498305]     Ответить | Цитировать Сообщить модератору
 Re: Изоляция транзакции  [new]
Rankatan
Member

Откуда:
Сообщений: 250
Создать поле с типом datetime, если место реoзервируется то это поле заполняется текущим временем.
20 май 17, 14:45    [20498381]     Ответить | Цитировать Сообщить модератору
 Re: Изоляция транзакции  [new]
Lamer666
Member

Откуда:
Сообщений: 83
Rankatan,

Спасибо за ваш совет. А какой уровень изоляции транзакций посоветуете использовать?
21 май 17, 12:39    [20499258]     Ответить | Цитировать Сообщить модератору
 Re: Изоляция транзакции  [new]
Rankatan
Member

Откуда:
Сообщений: 250
Lamer666
Rankatan,

Спасибо за ваш совет. А какой уровень изоляции транзакций посоветуете использовать?

По умолчанию. Вам не нужны для решение этой задачи уровни изоляциии совсем.
21 май 17, 14:38    [20499350]     Ответить | Цитировать Сообщить модератору
 Re: Изоляция транзакции  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
Rankatan
Создать поле с типом datetime, если место реoзервируется то это поле заполняется текущим временем.
По умолчанию. Вам не нужны для решение этой задачи уровни изоляциии совсем.
ситуацию с таймаутом вы ещё обработаете, а как вы предлагаете "резервировать место за покупателем" в процессе заказа при многопользовательской работе?
21 май 17, 15:12    [20499393]     Ответить | Цитировать Сообщить модератору
 Re: Изоляция транзакции  [new]
Rankatan
Member

Откуда:
Сообщений: 250
Дедушка
Rankatan
Создать поле с типом datetime, если место реoзервируется то это поле заполняется текущим временем.
По умолчанию. Вам не нужны для решение этой задачи уровни изоляциии совсем.
ситуацию с таймаутом вы ещё обработаете, а как вы предлагаете "резервировать место за покупателем" в процессе заказа при многопользовательской работе?

Я не понимаю в чем сложности. Пользователь нажимает кнопку "резервировать", в БД у таблицы со списком мест у конкретного места ставится время резервирования + проверяется не стоит ли уже у этого места время резервирования которое меньше 3х минут например. В реальности ественно будет чуть посложнее, но в любом случае должна быть дата резервирования, а не мега костыль который будет держать 3 минуты открытую транзакцию в БД.
21 май 17, 15:33    [20499425]     Ответить | Цитировать Сообщить модератору
 Re: Изоляция транзакции  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7769
При использовании веб-интерфейса физическая транзакция не может быть использована. Необходима логическая с тайм-аутом принятия решения.
22 май 17, 12:30    [20500994]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить