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