![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите, а как организовать блокировку записи MS SQL Server [D7, MySQL]
antoxa2005 © (2006-07-05 15:24:00)Как с помошью ADO устанвоть блокировку изменяемой записи, что бы остальные пользователи не могли изменять записи т.е. что бы при попытке изменять запись выдать сообщение "запись изменяется другим пользователем".
ЮЮ (2006-07-06 05:18:00) [1]
> в тоже врем другой изменял эти же данные и ни каких конфликтов
> не было, просто, кто последний сохранил, те данные и остались?
>
Для этого как раз ничего делать и не надо, достаточно иметь ключевые поля, не изменяемые пользователями, чтобы запрос на update имел вид
UPDATE
...
Where <ключевое поле> = <значение>
antoxa2005 (2006-07-06 02:16:00) [2]Хорошо. Ну, а, как реализовать механизм "кто последний, тот и папа", что бы один пользователь изменял данные, в тоже врем другой изменял эти же данные и ни каких конфликтов не было, просто, кто последний сохранил, те данные и остались?
Виталий Панасенко (2006-07-05 17:41:00) [3]
> antoxa2005 (05.07.06 15:24)
> Как с помошью ADO устанвоть блокировку изменяемой записи,
> что бы остальные пользователи не могли изменять записи
> т.е. что бы при попытке изменять запись выдать сообщение
> "запись изменяется другим пользователем".
у меня Де-жа-вю. уже ж обьясняли - какая разница, когда второй пользователь поменяет ту же запись, которую менял первый ! В Акцес как файл-серверной СУБД(в Парадоксе точно) при переходе НД в dsEdit ставится такая пометка(о блокировке). Но при работе с серверами - нет. Так как данные собственно меняются ПОСЛЕ Postа, никаких допдействий при вызове Edit не производится. Есть одни компонюхи, ктороые так умеют делать(из мне известных) под FireBird - FIB+. выставляешь одну опцию и при вызове Edit идет холостой UPDATE, что гарантирует 100% - если пользовтаель 1 начал редактировать запись, не записал и пошел курить, второй через полчаса прибьет его. Т.к. будет либо долго ждать "отвисания" "подвисшей" проги, либо получит инфу о конфликте конкуририующих апдейтов. при чем с каждой попыткой будет все злее и злее. хотя первый в этом и не виноват - откуда ему знать, что тут бардак
antoxa2005 (2006-07-05 16:44:00) [4]Задача простая несколько клиентов (3-7) добавляют, изменяют и удаляют записи. В БД корректируют справочники и т.д. все это спокойно работает на Access, но есть неолбходимость работать ч-з высокоскоростной Интеренет, следовательно нужен сервер c минимальной функциональностью. Но какой?
Megabyte (2006-07-05 16:38:00) [5]
> Я не могу определить что использовать MS SQL Server 2005
> Express и работать привычно ч-з ADO или использовать Fire
> Bird 1.5.x и работать ч-з IB компоненты.
Все зависит от задачи!
antoxa2005 (2006-07-05 15:49:00) [6]Я не могу определить что использовать MS SQL Server 2005 Express и работать привычно ч-з ADO или использовать Fire Bird 1.5.x и работать ч-з IB компоненты. С Access проблем ни каких, но необходим удаленный доступ к БД.
Ega23 (2006-07-05 15:42:00) [7]Если именно
"запись изменяется другим пользователем"., то создавать таблицу блокировок, перед изменением вставлять туда соответствующую запись, после изменения - удалять. Ну и перед тем, как вставлять в неё запись - проверять на наличие такой записи. Если есть - выводить сообщение. Если нет - захватывать записб для модификации.
Кстати, так можно определить каким именно пользователем изменяется запись.
Если проще - то смотреть в сторону Isolation Level.
P.S. Ты уж определись - MySQL у тебя или MSSQL - это 2 совсем разные СУБД.