存储过程之联合事务

  亲们!还记得前几篇关于存储过程的博客吧!接下来就让我们更深的了解和运用它即联合事务,让它充分发挥其优势。

       首先我在这里简单介绍下事务:

       数据库事务(Database Transaction),是指作为单个逻辑工作单元执行的一系列操作。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。 由于在前边介绍过事务,这里就不多说了。欢迎观看相关链接:

      http://blog.youkuaiyun.com/liu_yujie2011com/article/details/9004816

     接着分析下事务及存储过程在机房合作中的运用:在注册学生信息时要考虑到三张表:学生表,卡表,充值表。将新注册的信息插到这几个表中,这时问题出现了。是一张一张表的插呢?还是同时插?答案当然是同时插。但是问题又出现了,如果同时插入三条信息,有一条没成功怎么办?这时事务就排上用场了,如果在插入数据时出现错误则立即回滚并提示错误信息。那就让我们进入实践吧!

     存储过程加事务的代码:

ALTER PROCEDURE [dbo].[PROC_StudentRegister]
@studentID varchar(20) ,@Name varchar(20),@sex varchar(20),@department varchar(20),@grade varchar(20),@Classroom varchar(20),@explain varchar(20),@userID varchar(20),
@recharge money,@rechargeDate date,@rechargeTime time(7),@isCheck varchar(20),
@cardID varchar(20),@Balance money,@registerDate date,@registerTime time(7),@cardFix varchar(20),@state varchar(20)
AS  
Begin
	--事务
	SET NoCOUNT ON;
	SET XACT_ABORT ON;
	begin Tran ok  --开始一个事务
	
	--添加学生表
	insert into T_StudentInfo(studentID ,Name,sex,department,grade,Classroom,explain,userID) values (@studentID ,@Name,@sex,@department,@grade,@Classroom,@explain,@userID)  

	--添加卡表
	insert into T_CardInfo(cardID,Balance,registerDate,registerTime,cardFix,state,studentID,isCheck,userID) values(@cardID,@Balance,@registerDate,@registerTime,@cardFix,@state,@studentID,@isCheck,@userID)    
 
	--添加充值表
	insert into T_RechargeInfo(cardID,recharge,rechargeDate,rechargeTime,userID,isCheck) values(@cardID,@recharge,@rechargeDate,@rechargeTime,@userID,@isCheck)  
	
	if @@ERROR = 0  --如果数据库操作没错
		commit Tran ok--提交事务
	else --有错
		begin --如果出错
			rollback Tran --回滚事务
	end
End
    以上是在数据库中加事务,另一种是在代码中加,现在就不介绍了!在今后的学习中再慢慢研究和体会!

评论 34
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值