zoukankan      html  css  js  c++  java
  • ylb:事务

    ylbtech_sqlserver

    create database bank
    go
    
    use bank
    go
    
    create table users
    (
        uid int primary key identity(1,1),
        uname varchar(10) not null,
        balance float 
    )
    go
    
    insert into users values('zzl', 1000)
    insert into users values('zsy', 1000)
    
    select * from users
    
    --创建一个事物,实现zsy转账500给zzl
    /*
    update users set balance = balance + 500
    where uname = 'zzl'
    
    update users set balance = balance - 500
    where uname = 'zzz'*/
    
    BEGIN TRANSACTION
    DECLARE @n1 int
    DECLARE @n2 int
    
    update users set balance = balance + 500
    where uname = 'zzl'
    SET @n1 = @@ROWCOUNT
    
    update users set balance = balance - 500
    where uname = 'zsy'
    SET @n2 = @@ROWCOUNT
    
    IF @n1 >= 1 and @n2 >= 1
    BEGIN
        COMMIT
        PRINT '转账成功'
    END
    ELSE
    BEGIN
        ROLLBACK
        PRINT '转账失败!!'
    END
    
    select * from users
    
    --避免透支----------------------------------
    
    BEGIN TRANSACTION
    DECLARE @n1 int
    DECLARE @n2 int
    DECLARE @bal float  --保存班长支出以后的余额
    
    update users set balance = balance + 500
    where uname = 'zzl'
    SET @n1 = @@ROWCOUNT
    
    update users set balance = balance - 500
    where uname = 'zsy'
    SET @n2 = @@ROWCOUNT
    
    IF @n1 >= 1 and @n2 >= 1
    BEGIN
    /*
        COMMIT
        PRINT '转账成功'
    */
        --如果zsy-500为负,就回滚事务
        select @bal =  balance from users where uname = 'zsy'
        IF @bal < 0
        BEGIN
            PRINT '班长余额不足,转账失败'
            ROLLBACK
        END
        ELSE
        BEGIN
            PRINT '转账成功'
            COMMIT
        END
    END
    ELSE
    BEGIN
        ROLLBACK
        PRINT '转账失败!!'
    END
    
    select * from users
  • 相关阅读:
    博客作业06--图
    博客作业05--查找
    博客作业04--树
    博客作业03--栈和队列
    博客作业2---线性表
    博客作业01-抽象数据类型
    C语言最后一次博客作业
    C语言第十次博客作业--结构体
    C语言第九次博客作业--指针
    C语言第八次博客作业--字符数组
  • 原文地址:https://www.cnblogs.com/ylbtech/p/3828814.html
Copyright © 2011-2022 走看看