T-Sql(二)事务(Transaction)
今天讲下T-Sql语法中事务的用法,事务在项目中一般用的很少,主要用于转账,或是一些多表操作,第一步完成不了滚回,不执行接下的步骤。要么都不完成要么都完成,这是事务的特征。
语法很简单,示例代码如下:
1 create database Transaction_9_30
2 use Transaction_9_30
3 drop table Zanghui
4 create schema Jago
5 create table Jago.Zhanghui
6 (
7 ID int primary key,
8 Balance int not null
9 )
10 insert into Jago.Zhanghui(ID,Balance) values(1,1000);
11 insert into Jago.Zhanghui(ID,Balance) values(2,3000);
12 update Jago.Zhanghui set Balance=1000 where ID=1;
13 update Jago.Zhanghui set Balance=3000 where ID=2;
14 select *from Jago.Zhanghui
15
16 begin transaction t1; --例子:转帐操作;一个表(id,balance)
17 declare @v bigint; --要求利用事务:
18 set @v = 0;
19 update Jago.Zhanghui set Balance=Balance-200 where ID=1;
20 if not exists(select *from Jago.Zhanghui where ID=1)
21 begin
22 --raiserror('asdfsdf',16,-1)
23 set @v = @v + 1;
24 end
25 --set @v = @v + @@error;
26 print @v;
27 update Jago.Zhanghui set Balance=Balance+200 where ID=2;
28 if not exists(select *from Jago.Zhanghui where ID=2)
29 begin
30 --update Jago.Zhanghui set Balance=Balance+200 where ID=1;
31 --raiserror('asdfsdf',16,-1)
32 set @v = 1;
33 end
34
35 if(@v = 0)
36 begin
37 print @v
38 commit tran t1;
39 end
40 else
41 begin
42 print @v
43 rollback tran t1;
44 end
45 --commit transaction t1
46
作者:田园里的蟋蟀
微信公众号:你好架构
出处:http://www.cnblogs.com/xishuai/
公众号会不定时的分享有关架构的方方面面,包含并不局限于:Microservices(微服务)、Service Mesh(服务网格)、DDD/TDD、Spring Cloud、Dubbo、Service Fabric、Linkerd、Envoy、Istio、Conduit、Kubernetes、Docker、MacOS/Linux、Java、.NET Core/ASP.NET Core、Redis、RabbitMQ、MongoDB、GitLab、CI/CD(持续集成/持续部署)、DevOps等等。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
微信公众号:你好架构
出处:http://www.cnblogs.com/xishuai/
公众号会不定时的分享有关架构的方方面面,包含并不局限于:Microservices(微服务)、Service Mesh(服务网格)、DDD/TDD、Spring Cloud、Dubbo、Service Fabric、Linkerd、Envoy、Istio、Conduit、Kubernetes、Docker、MacOS/Linux、Java、.NET Core/ASP.NET Core、Redis、RabbitMQ、MongoDB、GitLab、CI/CD(持续集成/持续部署)、DevOps等等。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。