存储过程嵌套事物

例如在添加购物车(的存储过程)时,内部嵌套事物,当用户已经有购物车时,获取该用户的购物车ID;若用户还没有购物车时,为该用户添加一个购物车ID:
-- =============================================
--  添加购物车
-- =============================================
ALTER PROCEDURE [dbo].[AddCart]
  @userID varchar(50),
  @bookISBN varchar(50) 
AS
BEGIN
 declare @errorInfo int
 set @errorInfo=0
 Begin Transaction T
 
  --获取用户购物车ID
  declare @userCartID int
  if(exists(select Cart_ID from Carts where U_ID=@userID))
  begin
   --获取已存在的购物车ID
   select @userCartID=Cart_ID from Carts where U_ID=@userID
  end
  else
  begin
   --如果该用户还没有购物车,那么为该用户新增一个购物车
   insert into Carts values(@userID)
   set @userCartID=@@IDENTITY
   set @errorInfo=@errorInfo+@@error
  end

  --往购物车详细表里加入书籍
  if(Exists(select Book_ISBN from CartDetails where Book_ISBN=@bookISBN and Cart_ID=@userCartID))
  begin
   update CartDetails set Book_Count=Book_Count+1 where Book_ISBN=@bookISBN and Cart_ID=@userCartID
  end
  else
  begin
   insert into CartDetails values(@userCartID,@bookISBN,1)
   set @errorInfo=@errorInfo+@@error
  end
  
 
 if(@errorInfo<>0)
 begin
  Rollback Transaction T
 end
 else
 begin
  Commit Transaction T
 end
  
END

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值