Предотвращение фантомных чтений для отдельных строк
Вам нужно проанализировать данные о клиентах банка с customer_id от 1 до 10. Вы хотите заблокировать только те строки таблицы customers, у которых customer_id находится в диапазоне от 1 до 10. Таким образом вы гарантируете, что никто не сможет изменить эти строки, при этом другие транзакции смогут работать с остальной частью таблицы.
Вам нужно выбрать клиентов и снова выполнить ряд математических операций. (В этом упражнении мы не будем на них останавливаться.) После этого вы хотите повторно выбрать клиентов с customer_id от 1 до 10, убедившись, что ничего не изменилось.
Как подготовить этот скрипт?
Это упражнение является частью курса
Транзакции и обработка ошибок в SQL Server
Инструкции к упражнению
- Установите подходящий уровень изоляции, чтобы предотвратить фантомные чтения.
- Начните транзакцию.
- Выберите клиентов, которых хотите заблокировать.
- Зафиксируйте транзакцию.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
-- Set the appropriate isolation level
___ ___ ___ ___ ___
-- Begin a transaction
___ ___
-- Select customer_id between 1 and 10
SELECT *
FROM customers
___ customer_id ___ ___ AND ___;
-- After completing some mathematical operation, select customer_id between 1 and 10
SELECT *
FROM customers
___ customer_id ___ ___ AND ___;
-- Commit the transaction
___ ___