zoukankan      html  css  js  c++  java
  • SQL:事务检查xx与应用表的重复性,同时向两个表中同时插入数据...

    /********************************************************************************
    作用:检查xx与应用表的重复性,同时向两个表中同时插入数据>>新增/删除
    Author:xx           
    Finish DateTime: 2011-3-15 11:31:13
    Return Value:
                -1:存储过程执行失败
                -2:存在相同的主键
                Insert:返回插入自动ID
                Update:返回更新记录数
                Delete:返回删除记录数
    ********************************************************************************
    */

    ALTER PROCEDURE [dbo].[P_Res_Car_InsertDelete]
    (

        @Erp_CarID  int = 0, -- Erp_CarID
        @P_CarID  int = 0, -- 租车ID
        @CarName  nvarchar(50) = '', -- 车型名
        @CarCardID  int = 0, -- 车品牌ID
        @BoxAmount  nvarchar(50) = '', -- 厢式/车体
        @SeatAmount  nvarchar(50) = '', -- 座位数
        @Shelves  nvarchar(50) = '', -- 变速箱
        @Quantity  nvarchar(50) = '', -- 排量
        @OilUse  nvarchar(50) = '', -- 油耗
        @OilSandard  nvarchar(50) = '', -- 燃油标准
        @CarIntroduce  nvarchar(1000) = '', -- 车型介绍
        @Adding  bit = 0, -- 追加标识- 云计算默认为true ,应用平台为false
        @FillName  nvarchar(50) = '', -- 发布人
        @FillDateTime  datetime = getdate, -- 发布时间
        @DataTable_Action_  varchar(10) = ''  -- 操作方法 Insert:增加 Update:修改 Delete:删除
    )
    AS
        DECLARE @ReturnValue varchar(18) -- 返回操作结果
        DECLARE @P_Cid int = 88 -- 提交云计算表返回的id
        SET @ReturnValue = -1
       
       
        -- 新增
        IF (@DataTable_Action_='Insert')
        begin  
          if  exists(select  *  from  P_Car  where  CarName=@CarName and BoxAmount=@BoxAmount and Shelves=@Shelves and Quantity=@Quantity )
             begin
             --云计算平台已存在相同记录
             SET @ReturnValue = -9        
             END       
          else if  exists(select  *  from  Res_Car  where  CarName=@CarName and BoxAmount=@BoxAmount and Shelves=@Shelves and Quantity=@Quantity )
             begin
             --应用平台已存在相同记录
             SET @ReturnValue = -99
             END   
           else
             BEGIN   
                begin tran --开始事务
             
                --提交云计算
                INSERT INTO P_Car(CarName,CarCardID,BoxAmount,SeatAmount,Shelves,Quantity,OilUse,OilSandard,CarIntroduce,Auditing,FillName,FillDateTime,ERPState
                ) VALUES (@CarName,@CarCardID,@BoxAmount,@SeatAmount,@Shelves,@Quantity,@OilUse,@OilSandard,@CarIntroduce,'0',@FillName,@FillDateTime ,'1')
                if @@error<>0
                  begin
                  rollback tran --回滚事务
                  SET @ReturnValue = -1
                  end
                 
                SELECT @P_Cid = SCOPE_IDENTITY()
                --提交应用平台
                INSERT INTO Res_Car(P_CarID,CarName,CarCardID,BoxAmount,SeatAmount,Shelves,Quantity,OilUse,OilSandard,CarIntroduce,Adding,FillName,FillDateTime
                ) VALUES (@P_Cid,@CarName,@CarCardID,@BoxAmount,@SeatAmount,@Shelves,@Quantity,@OilUse,@OilSandard,@CarIntroduce,@Adding,@FillName,@FillDateTime)
                if @@error<>0
                  begin
                  rollback tran --回滚事务
                  SET @ReturnValue = -1
                  end

                commit tran --提交事务
                SELECT @ReturnValue = SCOPE_IDENTITY()    
          
          end
         end

       
        --删除
        IF (@DataTable_Action_='Delete')
        BEGIN
            DELETE Res_Car WHERE (Erp_CarID=@Erp_CarID)
            SET @ReturnValue = @@ROWCOUNT
        END

        SELECT @ReturnValue

  • 相关阅读:
    JavaScript自动化构建工具grunt、gulp、webpack介绍
    开始使用 Vuejs 2.0 ---简单总结2
    开始使用 Vuejs 2.0 ---简单总结1
    Bootboxjs快速制作Bootstrap的弹出框效果
    FlexSlider是一个非常出色的jQuery滑动切换插件
    CSS实现背景透明,文字不透明(兼容各浏览器)
    jquery中attr和prop的区别
    GitHub 的分支创建与合并
    [译]使用NuGet管理共享代码
    [译]Nuget.Server
  • 原文地址:https://www.cnblogs.com/Fooo/p/1986802.html
Copyright © 2011-2022 走看看