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
复制代码

 

分类:  SQL Server
本文转自ylbtech博客园博客,原文链接:http://www.cnblogs.com/ylbtech/p/3828814.html ,如需转载请自行联系原作者
相关文章
|
7月前
|
SQL 关系型数据库 MySQL
十四、事务Transaction
十四、事务Transaction
77 0
|
6月前
|
SQL 关系型数据库 MySQL
MySQL数据库——事务操作-begin-commit-rollback
MySQL数据库——事务操作-begin-commit-rollback
59 1
|
SQL 存储 关系型数据库
MySQL 事务原理:事务概述、隔离级别、MVCC-1
MySQL 事务原理:事务概述、隔离级别、MVCC
88 0
|
SQL Oracle 关系型数据库
SqlServer事务详解(事务隔离性和隔离级别详解)(上)
SqlServer事务详解(事务隔离性和隔离级别详解)
|
SQL 安全 关系型数据库
SqlServer事务详解(事务隔离性和隔离级别详解)(下)
SqlServer事务详解(事务隔离性和隔离级别详解)(下)
|
SQL 存储 安全
MySQL数据库(27):事务安全 transaction
MySQL数据库(27):事务安全 transaction
144 0
|
存储 SQL 缓存
mysql存储过程与事务
mysql存储过程与事务
723 0
mysql存储过程与事务
|
SQL 存储 Java
|
Java 关系型数据库 数据库连接