使用 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。 - 从
customers表中选择first_name、last_name、email和phone。
交互式实操练习
通过完成这段示例代码来试试这个练习。
-- Set the appropriate isolation level
___ TRANSACTION ___ LEVEL ___ ___
-- Select first_name, last_name, email and phone
SELECT
___,
___,
___,
___
FROM customers;