• 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

  • 相关阅读:
    GithubPlus+PicGo + Typora 一键式图床
    快速掌握Linux这篇文章就够了。
    跨行程序员Java进阶--基础语法
    Prometheus(普罗米修斯)
    【学习记录】Golang
    服务器Docker-Compose 安装 Anaconda
    Kubernetes集群部署
    Jenkins部署
    Harbor部署
    Docker、Docker-Compose的安装以及相关使用
  • 原文地址:https://www.cnblogs.com/cxlings/p/2385697.html
Copyright © 2020-2023  润新知