存储过程中使用隔离级别

SET   TRANSACTION   ISOLATION   LEVEL  
  控制由连接发出的所有   Microsoft®   SQL   Server™   SELECT   语句的默认事务锁定行为。  
   
  语法  
  SET   TRANSACTION   ISOLATION   LEVEL  
          {   READ   COMMITTED  
                  |   READ   UNCOMMITTED  
                  |   REPEATABLE   READ  
                  |   SERIALIZABLE    
          }  
   
  参数  
  READ   COMMITTED  
   
  指定在读取数据时控制共享锁以避免脏读,但数据可在事务结束前更改,从而产生不可重复读取或幻像数据。该选项是   SQL   Server   的默认值。  
   
  READ   UNCOMMITTED  
   
  执行脏读或   0   级隔离锁定,这表示不发出共享锁,也不接受排它锁。当设置该选项时,可以对数据执行未提交读或脏读;在事务结束前可以更改数据内的数值,行也可以出现在数据集中或从数据集消失。该选项的作用与在事务内所有语句中的所有表上设置   NOLOCK   相同。这是四个隔离级别中限制最小的级别。  
   
  REPEATABLE   READ  
   
  锁定查询中使用的所有数据以防止其他用户更新数据,但是其他用户可以将新的幻像行插入数据集,且幻像行包括在当前事务的后续读取中。因为并发低于默认隔离级别,所以应只在必要时才使用该选项。  
   
  SERIALIZABLE  
   
  在数据集上放置一个范围锁,以防止其他用户在事务完成之前更新数据集或将行插入数据集内。这是四个隔离级别中限制最大的级别。因为并发级别较低,所以应只在必要时才使用该选项。该选项的作用与在事务内所有   SELECT   语句中的所有表上设置   HOLDLOCK   相同。  
   
  注释  
  一次只能设置这些选项中的一个,而且设置的选项将一直对那个连接保持有效,直到显式更改该选项为止。这是默认行为,除非在语句的   FROM   子句中在表级上指定优化选项。  
   
  SET   TRANSACTION   ISOLATION   LEVEL   的设置是在执行或运行时设置,而不是在分析时设置。  
   
  示例  
  下例为会话设置   TRANSACTION   ISOLATION   LEVEL。对于每个后续   Transact-SQL   语句,SQL   Server   将所有共享锁一直控制到事务结束为止。  
   
  SET   TRANSACTION   ISOLATION   LEVEL   REPEATABLE   READ  
  GO  
  BEGIN   TRANSACTION  
  SELECT   *   FROM   publishers  
  SELECT   *   FROM   authors  
  ...  
  COMMIT   TRANSACTION  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值