Russian Qt Forum
Ноябрь 24, 2024, 14:03
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Базы данных
>
Запрет редактирования строки таблицы MySql, если данная строка просматривается
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Запрет редактирования строки таблицы MySql, если данная строка просматривается (Прочитано 10898 раз)
miha-ha
Гость
Запрет редактирования строки таблицы MySql, если данная строка просматривается
«
:
Июнь 13, 2010, 09:42 »
Подскажите как в теории(или практически) реализовать?
Ситуация: один пользователь просматривает запись таблицы, все другие пользователи должны уведомляться, что данная запись заблокирована для изменения таким-то пользователем. Система распределённая БД на сервере, доступ клиентов через инет, клиенты на QT.
Я думал реализовать так: при запросе на редактирование в таблицу BLOCK_REC помещается id записи с указанием пользователя производившего выборку. После оканчания обработки записей пользователь очищает свои записи в таблице BLOCK_REC. При такой схеме перед выбором определенной записи мне достаточно просмотреть таблицу BLOCK_REC и проверить можно ли редактировать, и если нет, то узнать кем заблокирована запись... Но есть очень тонкий момент, который проявляется если пользователь не смог за собой очистить заблокированные записи... например выключили свет ...
Подскажите как решается данный вопрос?
Записан
MoPDoBoPoT
Гость
Re: Запрет редактирования строки таблицы MySql, если данная строка просматривается
«
Ответ #1 :
Июнь 13, 2010, 15:52 »
В MySql есть системные триггеры?
А вообще, с таким вопросом лучше на sql.ru идти.
Записан
linkr
Гость
Re: Запрет редактирования строки таблицы MySql, если данная строка просматривается
«
Ответ #2 :
Июнь 13, 2010, 17:13 »
вопрос интересный, реализовать можно по разному, тоже бы хотелось интересный ответ
Записан
miha-ha
Гость
Re: Запрет редактирования строки таблицы MySql, если данная строка просматривается
«
Ответ #3 :
Июнь 15, 2010, 13:40 »
Цитата: MoPDoBoPoT от Июнь 13, 2010, 15:52
В MySql есть системные триггеры?
А вообще, с таким вопросом лучше на sql.ru идти.
Спасибо за совет! Попытаю там счастья
Записан
crossly
Гость
Re: Запрет редактирования строки таблицы MySql, если данная строка просматривается
«
Ответ #4 :
Июнь 15, 2010, 14:29 »
select ... for update
Записан
miha-ha
Гость
Re: Запрет редактирования строки таблицы MySql, если данная строка просматривается
«
Ответ #5 :
Июнь 15, 2010, 18:03 »
Цитата: crossly от Июнь 15, 2010, 14:29
select ... for update
а как узнать(организовать) каким пользователем заблокирована запись?
Записан
Nimbus
Гость
Re: Запрет редактирования строки таблицы MySql, е
«
Ответ #6 :
Июнь 16, 2010, 06:56 »
Цитата: miha-ha от Июнь 15, 2010, 18:03
а как узнать(организовать) каким пользователем заблокирована запись?
Скорее всего - никак. Я в Оракле столкнулся с такой же проблемой. Для этого нужен доступ к просмотру всех транзакций в СУБД, а это уже по-видимому привилегия администратора. Либо, всё таки ведите ещё одну таблицу в своей БД, в которой отражается состояние заблокированных записей и пользователей их заблокировавших.
«
Последнее редактирование: Июнь 16, 2010, 06:59 от Nimbus
»
Записан
crossly
Гость
Re: Запрет редактирования строки таблицы MySql, если данная строка просматривается
«
Ответ #7 :
Июнь 16, 2010, 10:05 »
простите.... а зачем знать кто заблокировал запись?
Записан
xokc
Птица говорун
Offline
Сообщений: 976
Re: Запрет редактирования строки таблицы MySql, если данная строка просматривается
«
Ответ #8 :
Июнь 16, 2010, 20:23 »
Видимо, чтобы себя самого не заблокировать
Записан
Nimbus
Гость
Re: Запрет редактирования строки таблицы MySql, если данная строка просматривает
«
Ответ #9 :
Июнь 17, 2010, 04:17 »
Цитата: xokc от Июнь 16, 2010, 20:23
Видимо, чтобы себя самого не заблокировать
Вообще-то бывают такие случаи, когда человек заблокировал запись и ушёл по своим делам, а другие не могут получить к ней доступ. Для этого и надо, чтобы потом знать кого пинать, когда работа стоит.
Записан
crossly
Гость
Re: Запрет редактирования строки таблицы MySql, если данная строка просматривается
«
Ответ #10 :
Июнь 17, 2010, 09:57 »
и что вы будите бегать по офису.... и вырубать проги у тех кто залочил... ??
Записан
Nimbus
Гость
Re: Запрет редактирования строки таблицы MySql, если данная строка просматривает
«
Ответ #11 :
Июнь 17, 2010, 11:58 »
Цитата: crossly от Июнь 17, 2010, 09:57
и что вы будите бегать по офису.... и вырубать проги у тех кто залочил... ??
Конечно, если БД таких масштабов, что к ней подключены сотрудники из нескольких офисов в городе (в моём случае так), то проще позвонить начальнику нужного отдела или самому сотруднику, ну а так, чего бы и не побегать
Записан
crossly
Гость
Re: Запрет редактирования строки таблицы MySql, если данная строка просматривается
«
Ответ #12 :
Июнь 17, 2010, 12:11 »
хороший подход....
Записан
miha-ha
Гость
Re: Запрет редактирования строки таблицы MySql, если данная строка просматривается
«
Ответ #13 :
Июль 10, 2010, 23:24 »
Сделал так(может кому пригодится):
При выборе записи заноситься информация в таблицу БЛОК_РЕК (имя_таблицы, пользователь_заблокировавший, ид_заблокированной_записи, срок_аренды)
срок_аренды - это метка времени = текущее время + 90секунд;
При просмотре записи больше минуты аренда продлевается опять на 90секунд.
При таком подходе, даже если отключили неожиданно свет или ещё чего приключилось максимум через девяносто минут аренда закончиться и при очередном запросе, если текущее время больше срока_аренды, то запись считается не заблокированной.
Если есть более реальные(правильные) предложения с удовольствием их опробую!
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...