
    Новые сообщения [новые:0]
  
  Дайджест 
  
  Горячие темы
    Избранное [новые:0]
  
Форумы 
 
Пользователи 
Статистика 
Статистика нагрузки 
    Мод. лог 
  
  Поиск 
| 
 | 
| 13.02.2001, 17:25 | |||
|---|---|---|---|
| Нужно сделать монопольную блокировку на читаемую стороку | |||
| #18+ А именно я выбираю из таблицы 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 Если есть еще какие возможные решения данной задачи, то я с большим удовольствием прочту. С уважением. ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
|  | 
| 13.02.2001, 19:45 | |||
|---|---|---|---|
| 
 | |||
| Нужно сделать монопольную блокировку на читаемую стороку | |||
| #18+ перед транзакцией надо поставить: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
|  | 
| 14.02.2001, 10:06 | |||
|---|---|---|---|
| Нужно сделать монопольную блокировку на читаемую стороку | |||
| #18+ недели 2 назад эта тема тут активно обсуждалась основное мнение было - такие блокировки надо делать самому: вести таблицы блокировок, писать триггеры, процедуры и т.д. ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
|  | 
| 14.02.2001, 12:25 | |||
|---|---|---|---|
| Нужно сделать монопольную блокировку на читаемую стороку | |||
| #18+ Если изменять уровень изоляции до указанного, то получается следующее: если в один момент к записи обратяться два пользователя, то первый отработает как надо, а второй отвалиться из-за конфликта (что собственно я пытаюсь избежать). Со вторым случаем тоже непонятно как я смогу заблокировать запись с помощью таблицы блокировок, писать триггеры, процедуры и т.д., если по прежнему пользователи могут использовать запись одновременно? Ведь к таблице блокировок также могут обратиться два пользователя и попытаться наложить на запись свои прова одновременно. Как быть при таком раскладе? P.S. Если место где написанно "-- здесь (по моему) должна стаять блокировка, но какая вот в чем вопрос?" заменить на "(TABLOCKX)", то все работает замечательно первый пользователь обрабатываеться,а второй стоит в очереди и никто при этом не отваливаеться, но есть одно "но" - блакируеться вся таблица, а надо только обрабатываемую запись. ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
|  | 
| 14.02.2001, 13:09 | |||
|---|---|---|---|
| 
 | |||
| Нужно сделать монопольную блокировку на читаемую стороку | |||
| #18+ а пробовал from MyTable ROWLOCK ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
|  | 
| 14.02.2001, 13:42 | |||
|---|---|---|---|
| Нужно сделать монопольную блокировку на читаемую стороку | |||
| #18+ UPDLOCK ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
|  | 
| 14.02.2001, 14:03 | |||
|---|---|---|---|
| Нужно сделать монопольную блокировку на читаемую стороку | |||
| #18+ Насчет второго случая: а вот таблицу блокировок надо апдейтить с ключом "(TABLOCKX)", она должна быть небольшая, это будет происходить быстро ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
|  | 
| 14.02.2001, 17:13 | |||
|---|---|---|---|
| Нужно сделать монопольную блокировку на читаемую стороку | |||
| #18+ Я думаю что UPDLOCK и ROWLOCK всетаки не для моего случая. ROWLOCK начинает действовать с уровня изоляции REPEATABLE READ, но тогда кто-то из двух отвалиться (почему-то первый запрасивший запись). UPDLOCK накладывает блокировку на UPDATE, а мне надо и на SELECT. TABLOCKX приемлемый вариант (если таблица небольшая) - я так пока все и сделал. Всем спасибо за участие в решение моей проблемы. Удачи. ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
|  | 
| 
 | 

| start [/forum/topic.php?fid=46&tablet=1&tid=1827342]: | 0ms | 
| get settings: | 11ms | 
| get forum list: | 13ms | 
| check forum access: | 3ms | 
| check topic access: | 3ms | 
| track hit: | 33ms | 
| get topic data: | 11ms | 
| get forum data: | 2ms | 
| get page messages: | 46ms | 
| get tp. blocked users: | 1ms | 
| others: | 249ms | 
| total: | 372ms | 

 
    | 0 / 0 | 
