|
Фраза ДЛЯ ИЗМЕНЕНИЯ в запросе | ☑ | ||
---|---|---|---|---|
0
1dvd
06.05.14
✎
10:16
|
Перечитал кучу инфы, но так и не нашел ответа на простой вопрос.
Если данные блокируются запросом с ключевыми словами "ДЛЯ ИЗМЕНЕНИЯ", а некоторые из данных уже заблокированы кем-то, выполнится ли запрос? Или в запрос не попадут такие данные? |
|||
1
ДенисЧ
06.05.14
✎
10:17
|
Блокировка будет.
Или вылетит по таймауту, или по взаимоблокировке. Или дождётся |
|||
2
1dvd
06.05.14
✎
10:18
|
(1) то есть оборачивать в попытку-исключения смысла нет?
|
|||
3
ДенисЧ
06.05.14
✎
10:19
|
(2) "Или вылетит по таймауту, или по взаимоблокировке."
|
|||
4
1dvd
06.05.14
✎
10:20
|
(3) мне нужно запросом убить двух зайцев:
1. Узнать, заблокировано ли 2. Заблокировать И ждать 2-3 минуты желания нет никакого |
|||
5
hhhh
06.05.14
✎
10:24
|
(4) почему 2-3 минуты? Обычно запись идет меньше секунды.
|
|||
6
MadHead
06.05.14
✎
10:25
|
Исходя из совместимости блокировок. Если была s блокировка, то u должна наложиться без конфликта. При любой другой изначальном типе блокировки будет ожидание
|
|||
7
DmitrO
06.05.14
✎
10:43
|
>>1. Узнать, заблокировано ли
В принципе, не правильная постановка вопроса. Во всех блокировочных механизмах, узнавать "заблокировано ли" смысла не имеет, т.к. может быть так, что сразу через 1 милисекунду после того как ты узнал заблокировано или нет, этот состояние может измениться. И эта милисекунда пройдет даже между строками твоего кода. Поэтому чтобы узнать |
|||
8
DmitrO
06.05.14
✎
10:43
|
надо именно блокировать (улетело раньше) )
|
|||
9
1dvd
06.05.14
✎
13:34
|
понял. всем спасибо
ещё вопрос. Запросом можно блокировать и те объекты, у которых режим блокировок автоматический, и те, у которых управляемый? |
|||
10
Maxus43
06.05.14
✎
13:39
|
Предложение ДЛЯ ИЗМЕНЕНИЯ предназначено для указания необходимости блокировки считываемых в транзакции данных.
Считанные данные становятся недоступными для чтения в других сессиях. Для файлового варианта блокируются указанные таблицы, а для клиент-серверного варианта — только выбранные записи. Блокировка снимается после завершения транзакции |
|||
11
DmitrO
06.05.14
✎
13:41
|
(9)Это зависит от режима транзакции, если транзакция управляемая, то предложение запроса ДЛЯ ИЗМЕНЕНИЯ игнорируется.
|
|||
12
1dvd
06.05.14
✎
13:44
|
(11) ещё раз спасибо!
|
|||
13
DmitrO
06.05.14
✎
13:47
|
(11)+ А вот какая будет транзакция зависит либо от:
- если в свойствах конфигурации Режим управления блокировкой данных стоит Автоматический и управляемый, то зависит того что указано в объекте который ее начинает. - иначе неявная транзакция начинаемая объектом будет в том режиме как указано в этом свойстве конфигурации, НЕ ЗАВИСИМО от того что указано в метаданных самого объекта. |
|||
14
1dvd
06.05.14
✎
13:54
|
(13) у меня в свойствах конфы указана Автом.+Упр. блокировки.
У самого объекта (РС) - управляемая. сама транзакция управляемая НачатьТранзакцию(РежимУправленияБлокировкойДанных.Управляемый); получается, мне использовать запрос не имеет смысла? нужно использовать ЗаблокироватьДанныеДляРедактирования ? |
|||
15
DmitrO
06.05.14
✎
14:17
|
(14)Нет. Надо использовать объект БлокировкаДанных для установки блокировок.
|
|||
16
DmitrO
06.05.14
✎
14:18
|
И да, если режим транзакции Управляемый использование в тексте запроса ДЛЯ ИЗМЕНЕНИЯ на имеет смысла.
|
|||
17
1dvd
06.05.14
✎
14:19
|
(15) не могу найти, где написано про "если транзакция управляемая, то предложение запроса ДЛЯ ИЗМЕНЕНИЯ игнорируется"
Четко помню, что вне транзакции эти слова игнорируются. Но, вот упр/авт - не могу найти |
|||
18
1dvd
06.05.14
✎
14:21
|
||||
19
1dvd
06.05.14
✎
14:22
|
(16) и ещё раз спасибо :)
ЗЫ Асмодей мышей совсем не ловит. Когда уже пасибки с лайками прикрутят? |
|||
20
DmitrO
06.05.14
✎
14:28
|
Да, непосредственно в документации по платформе действительно явно не сказано про это. Предлагаю написать в спортлото. :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |