Изменения документа Примеры.
Редактировал(а) Alexandr Fokin 2025/09/20 11:33
От версии 1.33
отредактировано Alexandr Fokin
на 2025/09/20 11:03
на 2025/09/20 11:03
Изменить комментарий:
К данной версии нет комментариев
К версии 1.36
отредактировано Alexandr Fokin
на 2025/09/20 11:33
на 2025/09/20 11:33
Изменить комментарий:
К данной версии нет комментариев
Сводка
-
Свойства страницы (1 изменено, 0 добавлено, 0 удалено)
Подробности
- Свойства страницы
-
- Содержимое
-
... ... @@ -1,3 +1,5 @@ 1 +== 1) Обновление строки по ключу. == 2 + 1 1 (% style="width:1426px" %) 2 2 |(% style="width:155px" %)**Необходимый уровень изоляции**|(% style="width:614px" %)**Запрос**|(% style="width:652px" %)**Комментарий** 3 3 |(% style="width:155px" %) |(% style="width:614px" %) |(% style="width:652px" %)Замечание: в приведенных ниже примерах не рассматриваются сценарии с использованием [[Оптимистичная блокировка>>doc:Архитектура и модели.Блокировки.Оптимистичная блокировка.WebHome]]. ... ... @@ -4,6 +4,8 @@ 4 4 Механизмы БД и [[Пессимистичная блокировка>>doc:Архитектура и модели.Блокировки.Пессимистичная блокировка.WebHome]]. 5 5 |(% style="width:155px" %)READ COMMITTED|(% style="width:614px" %){{code language="sql"}}BEGIN; 6 6 9 + -- Проверка 10 + 7 7 UPDATE accounts 8 8 SET balance = balance + @payment 9 9 WHERE acctnum = @account1 ... ... @@ -23,7 +23,7 @@ 23 23 BEGIN TRANSACTION 24 24 25 25 if (SELECT balance FROM accounts /*FOR UPDATE*/ where acctnum = @account2 ) < @payment 26 - //error30 + -- error 27 27 END IF 28 28 29 29 UPDATE accounts ... ... @@ -63,3 +63,6 @@ 63 63 Данное поведение также может быть реализовано на уровне READ COMMITTED, но для этого нужно явно выполнять чтение с updatelock. 64 64 (Причем для данного примера явная блокировка была бы обязательна только для проверяемого аккаунта, с которого выполняется списание). 65 65 ))) 70 + 71 + 72 +== 2) Обновление агрегата. ==