powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Про пессимистическую блокировку
10 сообщений из 10, страница 1 из 1
Про пессимистическую блокировку
    #32024457
Lohmatun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые!
Есть необходимость заблокировать записи в таблице в момент считывания, чтобы другие могли ее только просмотреть, но не менять. С БД работаю через АДО. Подозреваю, что когда я открываю рекордсет с установленной песс. блокировкой, то когда я встаю (Move...) на определенную запись, то она блокируется и другой пользователь при попытке встать в другом таком же открытом рекордсете на эту же запись получит эррор.
Внимание вопросы:
Правильно ли я понимаю песс. блокировку?
А можно ли пессиместически заблокировать сразу несколько записей в рекордсете?
...
Рейтинг: 0 / 0
Про пессимистическую блокировку
    #32024467
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сначала дай знать, лаптем какой фирмы ты "встаешь на запись". А также сообщи, какой у тебя курсор - серверный или клиентский.
...
Рейтинг: 0 / 0
Про пессимистическую блокировку
    #32024500
KonstN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Garya
Разве лапоть формы имеет значение, если говорим об ADO?
Песс. блокировка может быть выполнена только на серверной стороне и это логично.
2 Lohmatun
Правильно, да не совсем.
Блокировка установится после начала редактирования и до окончания. Для оптимистической - блокировка устанавливается только в момент физического сохранения отредактированных данных. Если прочитанные данные уже были изменены другим пользователем, произойдёт ошибка. Пессимистическая этого сделать не даст.
Для понимания можно прочесть в SQL BOL "Concurrency Architecture" и в Knowledge Base Q252317 с примером.
...
Рейтинг: 0 / 0
Про пессимистическую блокировку
    #32024529
Lohmatun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 KonstN
1. Что означает "после начала редактирования" - после перемещения по рекордсету на некую запись методами MoveFirst/Next/Prev...? - именно это мне непонятно
с "окончанием редактирования ясно" - это когда update сделал, а вот с началом...
2. А кто отслеживает (ADO?) - были ли изменены данные другим пользователем?
Пояснения:
мне надо, чтобы некий объект, представленный записью таблицы, пользователь мог бы "открыть на чтение", "открыть на чтение и запись", но если пользователь открыл объект "на чтение и запись", то другой уже не мог бы его открыть - только "на чтение"
На мой взгляд это немного отличается от подхода в дельфях и визалбасике
...
Рейтинг: 0 / 0
Про пессимистическую блокировку
    #32024559
KonstN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Lohmatun
1. Нет, не после Move, а после Edit и до Update.
Для оптимистической и после Edit рекорд не будет блокирована, а будет только на протяжении выполнения метода Update.
2. ADO. Это совсем не сложно, если смотреть как ADO работает внутри

Я не знаю подход в делфях, но в визалбасике именно такой подход - ноги растут из ODBC.
В принципе пессимистическая блокировка именно то, что ты хочешь - только при постановке на запись надо сказать Edit, а потом либо Update, либо CancelUpdate.
...
Рейтинг: 0 / 0
Про пессимистическую блокировку
    #32024571
Lohmatun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привожу список методов объекта Recordset из MSDN:
Methods
AddNew Method
Cancel Method
CancelBatch Method
CancelUpdate Method
Clone Method
Close Method
CompareBookmarks Method
Delete Method (ADO Recordset)
Find Method
GetRows Method
GetString Method
Move Method
MoveFirst, MoveLast, MoveNext, and MovePrevious Methods
NextRecordset Method
Open Method (ADO Recordset)
Requery Method
Resync Method
Save Method
Seek Method
Supports Method
Update Method
UpdateBatch Method

ну тупой я! ну где тут Edit?
или может я не тот объект смотрю?
...
Рейтинг: 0 / 0
Про пессимистическую блокировку
    #32024600
KonstN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вери-вери сорри.
Привычка - вторая натура
Для ADO это не справедливо.
Просто как только ты начинаешь редактировать запись при adLockPessimistic, она становится заблокированной пока не скажешь Update или CancelUpdate.
...
Рейтинг: 0 / 0
Про пессимистическую блокировку
    #32024619
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edit наследуется от TDataSet
...
Рейтинг: 0 / 0
Про пессимистическую блокировку
    #32024704
Lohmatun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"Просто как только ты начинаешь редактировать запись при adLockPessimistic, она становится заблокированной пока не скажешь Update или CancelUpdate."

- так вот я и интересуюсь, вызов какого метода означает, что я "начинаешь редактировать запись"? Это происходит в момент, когда соотв. запись в рекордсете становится текущей или еще как-то? Например, когда я присваиваю значение полю типа
rst.Fields("MyField").Value="Что-то"?
...
Рейтинг: 0 / 0
Про пессимистическую блокировку
    #32024734
KonstN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Совершенно в душу верно. Как только что-то изменил в текущей записи.
К сожалению, нет времени проверить, смогу только дома - поэкспериментируй сам.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Про пессимистическую блокировку
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]