zoukankan      html  css  js  c++  java
  • sql 隔离级别

    • READ UNCOMMITTED---未提交读(事务隔离的最低级别,仅可保证不读取物理损坏的数据)。
    • READ COMMITTED---提交读(SQL Server 默认级别)锁定正在读取的行。
    • REPEATABLE READ---可重复读。锁定所有读取的行
    • SERIALIZABLE---可串行读(事务隔离的最高级别,事务之间完全隔离)锁定表。
    1. begin try  
    2.     begin tran  
    3.         insert into dbo.TransTestTable values (66,'66');  
    4.         update dbo.TransTestTable set [Name] = '77' where [Id] = 66;  
    5.         --RAISERROR ('Error raised in TRY block.',16,1);  
    6.     commit tran  
    7. end try  
    8. begin catch  
    9.     rollback tran  
    10. end catch  

    CREATE DATABASE test
    GO
    --创建测试用表
    USE test
    GO
    CREATE TABLE 帐户表
    (
    帐号 CHAR(4),
    余额 INT
    )
    GO
    INSERT 帐户表
    SELECT 'A',100
    UNION ALL
    SELECT 'B',200
    select * from 帐户表;
    delete from 帐户表 where 帐号='B'


    --脏读
    BEGIN TRAN
    UPDATE 帐户表 SET 余额=100 WHERE 帐号='A'
    WAITFOR DELAY '00:00:10' --等待10秒
    UPDATE 帐户表 SET 余额=104 WHERE 帐号='A'
    COMMIT TRAN


    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
    BEGIN TRAN
    SELECT 余额 FROM 帐户表 WHERE 帐号='A'
    COMMIT TRAN

    -- 不可重复的读
    SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
    --或者 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
    BEGIN TRAN
    SELECT 余额 FROM 帐户表 WHERE 帐号='A'
    WAITFOR DELAY '00:00:10' --等待10秒
    SELECT 余额 FROM 帐户表 WHERE 帐号='A'
    COMMIT TRAN


    BEGIN TRAN
    UPDATE 帐户表 SET 余额=130 WHERE 帐号='A'
    COMMIT TRAN

    -- 幻读
    SET TRANSACTION ISOLATION LEVEL READ COMMITTED
    --或者 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
    --或者 SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
    BEGIN TRAN
    SELECT * FROM 帐户表
    WAITFOR DELAY '00:00:10' --等待10秒
    SELECT * FROM 帐户表
    COMMIT TRAN

    BEGIN TRAN
    INSERT INTO 帐户表 VALUES('C','300')
    COMMIT TRAN

  • 相关阅读:
    JavaScript 实现打印操作
    linux-centos7.6设置固定IP网络方法
    VMware网络配置三种网络模式(桥接、NAT、Host-only)
    SVN 执行cleanup报错:Cleanup failed to process the following paths
    word生成目录的pdf
    win10开机后将存在多个系统选择,改为直接进入系统无需选择
    Win10删除或是不显示快速访问中最近使用文件记录
    Dell T30解决报Alert! Cover was previously removed.
    WIN10安装.net报0x800F081F解决方法
    查看SVN当前登录用户
  • 原文地址:https://www.cnblogs.com/cxlings/p/2385697.html
Copyright © 2011-2022 走看看