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

Я не знаю подход в делфях, но в визалбасике именно такой подход - ноги растут из ODBC.
В принципе пессимистическая блокировка именно то, что ты хочешь - только при постановке на запись надо сказать Edit, а потом либо Update, либо CancelUpdate.
...
Рейтинг: 0 / 0
06.03.2002, 13:48
    #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
06.03.2002, 15:41
    #32024600
KonstN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про пессимистическую блокировку
Вери-вери сорри.
Привычка - вторая натура
Для ADO это не справедливо.
Просто как только ты начинаешь редактировать запись при adLockPessimistic, она становится заблокированной пока не скажешь Update или CancelUpdate.
...
Рейтинг: 0 / 0
06.03.2002, 21:17
    #32024619
Cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про пессимистическую блокировку
Edit наследуется от TDataSet
...
Рейтинг: 0 / 0
07.03.2002, 12:55
    #32024704
Lohmatun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про пессимистическую блокировку
"Просто как только ты начинаешь редактировать запись при adLockPessimistic, она становится заблокированной пока не скажешь Update или CancelUpdate."

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


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