Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.04 c
4-1147274009
suharew
2006-05-10 19:13
2006.09.10
чтение из COM порта


2-1155886701
Chort
2006-08-18 11:38
2006.09.10
EhLib


15-1155142507
Джо
2006-08-09 20:55
2006.09.10
MIDlet Pascal — вопли и жалобы


15-1156015707
Мефисто
2006-08-19 23:28
2006.09.10
х/ф "Планета обезъян" - 2 версии фильма или нет?


3-1151578931
Ak_vovan
2006-06-29 15:02
2006.09.10
Как очистить таблицу





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский