开始使用免费开始使用

使用 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_namelast_nameemailphone

交互式实操练习

通过完成这段示例代码来试试这个练习。

-- Set the appropriate isolation level
___ TRANSACTION ___ LEVEL ___ ___

	-- Select first_name, last_name, email and phone
	SELECT
    	___, 
        ___, 
        ___,
        ___
    FROM customers;
编辑并运行代码