存储过程删除主从表,回滚操作

用存储过程操作删除主从表记录,操作成功提交事务,失败回滚操作,避免删除异常误删数据。

ALTER PROCEDURE [dbo].[CopyCustomerDelete]
    /*
    (
    @parameter1 int = 5,
    @parameter2 datatype OUTPUT
    )
    */
    (
          @FromCustomerID int,
          @CustomerType int,
          @Result int output
    )
AS
    /* SET NOCOUNT ON */
BEGIN TRANSACTION
     DECLARE @Error int
     SET @Error=0
    IF @CustomerType>-1
     BEGIN
       DELETE FROM LightingControlSceneLevel WHERE  SceneID IN (SELECT SceneID FROM LightingControlScene where CustomerID=@FromCustomerID)--删除Machine场景配置记录
               
       DELETE FROM ParadoxScene WHERE SceneID IN (SELECT SceneID FROM LightingControlScene WHERE CustomerID=@FromCustomerID) --删除Machine场景Paradox配置记录
            
         DELETE FROM LightingControlSceneComfort WHERE SceneID IN (SELECT SceneID FROM LightingControlScene WHERE CustomerID=@FromCustomerID)--删除Comfort场景配置记录

       DELETE FROM LightingControlSceneStatus WHERE CustomerID=@FromCustomerID --删除Comfort场景状态记录

       DELETE FROM LightingControlScene WHERE CustomerID=@FromCustomerID --删除场景
            
       DELETE FROM LightingControlCircuit WHERE LCID IN (SELECT LCID FROM LightingControl WHERE CustomerID=@FromCustomerID)
           
       DELETE FROM LightingControl WHERE CustomerID=@FromCustomerID

       DELETE FROM Alarm WHERE CustomerID=@FromCustomerID

       DELETE FROM RXParam WHERE DeviceID IN (SELECT DeviceID FROM Device WHERE CustomerID=@FromCustomerID) --删除从表对应记录

       DELETE FROM Device WHERE CustomerID=@FromCustomerID   --删除主表记录

       DELETE FROM Comfort WHERE CustomerID=@FromCustomerID
          
       DELETE FROM CCTVGroup WHERE CustomerID=@FromCustomerID
          
       DELETE FROM Cctv WHERE CustomerID=@FromCustomerID
          
       DELETE FROM Area WHERE CustomerID=@FromCustomerID
          
       DELETE FROM ComfortRX WHERE CustomerID=@FromCustomerID
       --有错误则回滚,没有错误则提交事务
       SET @Error=@Error+@@ERROR
       IF @Error>0
           BEGIN            
                ROLLBACK TRANSACTION;
                SET @Result=-1
           END
       ELSE
           BEGIN
                COMMIT TRANSACTION;
                SET @Result=1
           END
     END
View Code

 

转载于:https://www.cnblogs.com/lizeyan/p/3410007.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值