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
  • 相关阅读:
    (五) 子类与继承
    linux7(centos7)新系统安装后要做的事!
    CentOS7系统搭建FTP服务器
    ---Docker学习随笔---基础管理部分---
    linux系统配置本地yum源
    安装redis 6.0.6
    LNMP部署
    如何在RHEL7或CentOS 7系统下修改网卡名称(亲测有效~!)
    Mysql常用基础命令操作
    MySQL版本浅介
  • 原文地址:https://www.cnblogs.com/ylbtech/p/3828814.html
Copyright © 2011-2022 走看看