Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2007.10.07;
Скачать: [xml.tar.bz2];

Вниз

Блокировки в MS SQL   Найти похожие ветки 

 
@dim   (2007-05-31 06:51) [0]

Начал изучать MS SQL, возникло несколько вопросов
1) Как средствами MS SQL заблокировать запись, если один из пользователей начал ее для редактировать (Имеется StringGrid, двойной щелчок вызывает форму редактирования записи в БД. Если один из пользователей начал редактирование, то для другово запись должна быть заблокирована)
2) Что делает этот код:
Create procedure _1sp__1SBKTTL_TLock AS
set nocount on declare @i integer select @i=1 from _1SBKTTL(TABLOCK HOLDLOCK) where 0=1
GO

Заранее спасибо


 
ЮЮ ©   (2007-05-31 09:08) [1]

> если один из пользователей начал ее для редактировать

1)У двух пользователей не должно возникать желания редактировать одну запись (как запись таблицы БД). А если это возможно, то какая разница заблокирована она или нет. Ибо в ситуации когда один отредактировал, а другой сделал то же самое через минуту после первого, никакая блокировка не спасёт, а первый и не узнает, что данные уже не те, что он минуту назад корректировал.
Тебе не кажется странным, что два пользователя хотят видеть разнве двнные в одной и тойже записи? И кто в такой ситуации прав?

2) А в BOL заглянуть? Коль уж начал изучать MS SQL.

HOLDLOCK Hold a shared lock until completion of the transaction instead of releasing the lock as soon as the required table, row, or data page is no longer required.

Т.е. блокирует таблицу целиком до завершения транзакции


 
@dim   (2007-05-31 09:17) [2]

Что такое BOL?


 
ЮЮ ©   (2007-05-31 09:40) [3]

Help его. Books Online называется. Стоит 1-м в меню Программы> MS SQL Server :)


 
ANB ©   (2007-05-31 10:20) [4]


> Стоит 1-м в меню Программы> MS SQL Server :)

Из QA его еще проще вызвать. Плюс там шаблончики есть - удобно.
ЗЫ. Добавили бы в QA еще форматалку запросов и вообще было бы счастье.


 
sniknik ©   (2007-05-31 10:42) [5]

> Имеется StringGrid
при работе с данными базы это означает "сделал жутко кривой велосипед с квадратными колесами"...
все остальное воспринимается как "помогите сделать колеса шестиугольными чтобы ход помягче стал"...

начал бы не с блокировок (mssql сам разберется с ними в большинстве случаев), начал бы с основ работы с базами. а там глядишь блокировать ничего надобности и не возникнет, при правильном подходе.


 
clickmaker ©   (2007-05-31 13:02) [6]


> @dim   (31.05.07 06:51)

если речь идет о совместном редактировании неких документов, то по принципу check-out - взял, документ (не запись!!) помечается как занятый с помощью поля в таблице, поредактировал, сохранил - check in- отдал.
Но это все на уровне предметной области, а не встроенными средствами СУБД.
А для отдельных записей и правда смысла нет, ибо см. [1]
в ситуации когда один отредактировал, а другой сделал то же самое через минуту после первого, никакая блокировка не спасёт, а первый и не узнает, что данные уже не те, что он минуту назад корректировал


 
ANB ©   (2007-05-31 14:18) [7]


> Но это все на уровне предметной области, а не встроенными
> средствами СУБД.

Встроенные как то получше вроде. Во всяком случае блокировка сама снимется в случае проблем. ИМХО.


 
Jan1   (2007-05-31 14:33) [8]


> в ситуации когда один отредактировал, а другой сделал то
> же самое через минуту после первого, никакая блокировка
> не спасёт, а первый и не узнает, что данные уже не те, что
> он минуту назад корректировал

можно ввести понятие версии записи(которая считается триггером), и перед открытием делать запросик на актуальность версии в буфере и в базе и соответственно предпринимать шаги: ругаться, выдавать сообщение что запись надо перечиать и т.п. В общем это суть регламента...


 
clickmaker ©   (2007-05-31 14:40) [9]


> Встроенные как то получше вроде. Во всяком случае блокировка
> сама снимется в случае проблем

это не блокировка в смысле блокирования записи/страницы/таблицы. Это статус именно объекта. По такому принципу работает, например, Source Safe



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2007.10.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.047 c
2-1188553610
MAXHo
2007-08-31 13:46
2007.10.07
Как добавить запись в конец таблицы?


15-1189260192
Yaloka
2007-09-08 18:03
2007.10.07
Интерфейс Delphi 2005


15-1189138046
SerJaNT
2007-09-07 08:07
2007.10.07
Вопрос по HTML


15-1189341635
AntiUser
2007-09-09 16:40
2007.10.07
Создан трехмерный голографический дисплей


15-1189059162
boriskb
2007-09-06 10:12
2007.10.07
Чой то это... непонятно





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский