Использование уровня изоляции READ UNCOMMITTED
В ваш банк приходит новый клиент, чтобы открыть счёт. Вы вносите его данные в систему, и запускается следующий скрипт:
BEGIN TRAN
INSERT INTO customers (first_name, last_name, email, phone)
VALUES ('Ann', 'Ros', '[email protected]', '555555555')
DECLARE @cust_id INT = scope_identity()
INSERT INTO accounts (account_number, customer_id, current_balance)
VALUES ('55555555555010121212', @cust_id, 150)
COMMIT TRAN
В этот момент ваш коллега из отдела маркетинга начинает рассылку писем всем клиентам — объявлен розыгрыш автомобиля! Его скрипт получает данные каждого клиента, включая того, которого вы только что добавили. При этом скрипт коллеги запускается после первой операции INSERT, но до выполнения COMMIT TRAN.
Как такое возможно?
Это упражнение является частью курса
Транзакции и обработка ошибок в SQL Server
Инструкции к упражнению
- Задайте уровень изоляции
READ UNCOMMITTED. - Выберите столбцы
first_name,last_name,emailиphoneиз таблицыcustomers.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
-- Set the appropriate isolation level
___ TRANSACTION ___ LEVEL ___ ___
-- Select first_name, last_name, email and phone
SELECT
___,
___,
___,
___
FROM customers;