SQLserver事务

定义

事务就是被绑定在一起作为一个逻辑工作单元的SQL语句组,如果任何一个语句操作失败那么整个操作就被失败,进而回滚到操作前状态,或者是上个节点。为了确保要么执行,要么不执行,就可以使用事务。要将一组语句作为事务考虑,就需要通过ACID测试,即原子性(Atomicity),一致性(Consistency),隔离性(Isolation)和持久性(Durability)。

使用

开始事务

begin Transaction 事务名

提交事务

commit transaction 事务名

回滚事务

rollback transaction 事务名

事务保存点

save transaction 事务名
举例

通过存储过程和事务实现转账功能
表名:Customers

表设置了约束金额不能小于0并且大于2000
在这里插入图片描述

表数据
在这里插入图片描述

通过MVC+EF来实现效果图

在这里插入图片描述

存储过程的编写

USE [jobDB]
GO
/****** Object:  StoredProcedure [dbo].[cp_Charge]    Script Date: 2020/5/27 16:30:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[cp_Charge]
(
@idout int,
@idin int,
@remain decimal (18,2)
)
as
--A转钱给B
--开始事务
begin Transaction tran_Charge
--定义变量记录错误数
declare @err_nums int 
set @err_nums=0
begin try
update Customers set Remain=Remain+@remain where id=@idout
set @err_nums=@err_nums+@@error
update Customers set Remain=Remain-@remain where id=@idin
set @err_nums=@err_nums+@@error
end try
begin catch
   print '错误编号:' +convert(varchar, error_number())+'错误消息'+error_message()
   set @err_nums=@err_nums+1
end catch
if(@err_nums>0)  --说明语句有错
   rollback Transaction tran_Charge  --回滚事务
else
   commit Transaction tran_Charge  --提交事务

结果图

在这里插入图片描述

如果金额小于0或者大于2000就会转账失败,双方的金额不会改变

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值