powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Нужно сделать монопольную блокировку на читаемую стороку
8 сообщений из 8, страница 1 из 1
Нужно сделать монопольную блокировку на читаемую стороку
    #32002210
Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А именно я выбираю из таблицы MyTable строку, в которой в дальнейшем хочу изменить параметры.
Но при этом мне надо чтоб эту строку никто не смог нипрочесть, не темболее изменить, а другие строки не попавшие в данный запрос были открыты.
Мои сооброжения следующие:

begin tran up_my_row
select
column1
from MyTable -- здесь (по моему) должна стаять блокировка, но какая вот в чем вопрос?
where
column2 = 234

/* операторы */

update MyTable
set
column1 = column1 + 10
where
column2 = 234
commit tran up_my_row

Если есть еще какие возможные решения данной задачи, то я с большим удовольствием прочту.

С уважением.
...
Рейтинг: 0 / 0
Нужно сделать монопольную блокировку на читаемую стороку
    #32002220
VadimB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
перед транзакцией надо поставить:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
...
Рейтинг: 0 / 0
Нужно сделать монопольную блокировку на читаемую стороку
    #32002233
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
недели 2 назад эта тема тут активно обсуждалась

основное мнение было - такие блокировки надо делать самому: вести таблицы блокировок, писать триггеры, процедуры и т.д.
...
Рейтинг: 0 / 0
Нужно сделать монопольную блокировку на читаемую стороку
    #32002237
Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если изменять уровень изоляции до указанного, то получается следующее:
если в один момент к записи обратяться два пользователя, то первый отработает как надо, а второй отвалиться из-за конфликта (что собственно я пытаюсь избежать).
Со вторым случаем тоже непонятно как я смогу заблокировать запись с помощью таблицы блокировок, писать триггеры, процедуры и т.д., если по прежнему пользователи могут использовать запись одновременно?
Ведь к таблице блокировок также могут обратиться два пользователя и попытаться наложить на запись свои прова одновременно.
Как быть при таком раскладе?

P.S. Если место где написанно "-- здесь (по моему) должна стаять блокировка, но какая вот в чем вопрос?" заменить на "(TABLOCKX)",
то все работает замечательно первый пользователь обрабатываеться,а второй стоит в очереди и никто при этом не отваливаеться, но есть одно "но" - блакируеться вся таблица, а надо только обрабатываемую запись.
...
Рейтинг: 0 / 0
Нужно сделать монопольную блокировку на читаемую стороку
    #32002241
VadimB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а пробовал from MyTable ROWLOCK
...
Рейтинг: 0 / 0
Нужно сделать монопольную блокировку на читаемую стороку
    #32002244
Oleg F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UPDLOCK
...
Рейтинг: 0 / 0
Нужно сделать монопольную блокировку на читаемую стороку
    #32002252
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насчет второго случая:

а вот таблицу блокировок надо апдейтить с ключом "(TABLOCKX)", она должна быть небольшая, это будет происходить быстро
...
Рейтинг: 0 / 0
Нужно сделать монопольную блокировку на читаемую стороку
    #32002262
Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю что UPDLOCK и ROWLOCK всетаки не для моего случая.
ROWLOCK начинает действовать с уровня изоляции REPEATABLE READ, но тогда кто-то из двух отвалиться (почему-то первый запрасивший запись).
UPDLOCK накладывает блокировку на UPDATE, а мне надо и на SELECT.
TABLOCKX приемлемый вариант (если таблица небольшая) - я так пока все и сделал.

Всем спасибо за участие в решение моей проблемы.

Удачи.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Нужно сделать монопольную блокировку на читаемую стороку
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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