zoukankan      html  css  js  c++  java
  • 存储过程删除主从表,回滚操作

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

    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
  • 相关阅读:
    Eclipse consle 输出语句中,误输中文,假死问题
    Eclipse 快捷键 (最实用)
    mysql 4种启动方式
    mysql索引的类型和优缺点
    Windows上 使用Composer安装tp5
    php 更新配置文件
    可视化工具连接Linux上的redis
    HttpClient 4 教程 第3章 HTTP状态管理
    HttpClient 4 教程 第2章 连接管理
    HttpClient 4 教程 第1章 基础
  • 原文地址:https://www.cnblogs.com/lizeyan/p/3410007.html
Copyright © 2011-2022 走看看