前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Audit Logging-Stored Procedure

Audit Logging-Stored Procedure

作者头像
蒋金楠
发布2018-01-16 16:12:29
6090
发布2018-01-16 16:12:29
举报
文章被收录于专栏:大内老A大内老A大内老A

1. T_ORDER

For Insert: sp_order_i

IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'sp_order_i')
    BEGIN
        DROP  Procedure  sp_order_i
    END

GO

CREATE Procedure sp_order_i
    (
        @p_order_id INT OUTPUT,
        @p_order_date DATETIME,
        @p_supplier VARCHAR(50),
        @p_created_by VARCHAR(50),
        @p_created_on DATETIME,
        @p_last_updated_by VARCHAR(50),
        @p_last_updated_on DATETIME,
        @p_transaction_no CHAR(36)        
    )

AS
        
   INSERT [dbo].[T_ORDER]
           ([ORDER_DATE]
           ,[SUPPLIER]
           ,[CREATED_BY]
           ,[CREATED_ON]
           ,[LAST_UPDATED_BY]
           ,[LAST_UPDATED_ON]
           ,[TRANSACTION_NO])
     VALUES
           (@p_order_date ,
           @p_supplier ,
           @p_created_by ,
           @p_created_on ,
           @p_last_updated_by ,
           @p_last_updated_on ,
           @p_transaction_no)
           
SET @p_order_id = SCOPE_IDENTITY()

IF @@ROWCOUNT = 0 
BEGIN
    RAISERROR ('Version conflicts!',10,1)
END      
GO

For Update: sp_order_u

IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'sp_order_u')
    BEGIN
        DROP  Procedure  sp_order_u
    END

GO

CREATE Procedure sp_order_u
    (
        @o_order_id INT,
        @p_order_date DATETIME,
        @p_supplier VARCHAR(50),
        @p_last_updated_by VARCHAR(50),
        @p_last_updated_on DATETIME,
        @p_transaction_no CHAR(36),
        @o_version_no TIMESTAMP
    )

AS

UPDATE [dbo].[T_ORDER]
   SET [ORDER_DATE] = @p_order_date
      ,[SUPPLIER] = @p_supplier
      ,[LAST_UPDATED_BY] = @p_last_updated_by 
      ,[LAST_UPDATED_ON] = @p_last_updated_on
      ,[TRANSACTION_NO] = @p_transaction_no
 WHERE ORDER_ID= @o_order_id 
AND VERSION_NO =  @o_version_no

IF @@ROWCOUNT = 0 
BEGIN
    RAISERROR ('Version conflicts!',10,1)
END   

GO

For Delete: sp_order_d

IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'sp_order_d')
    BEGIN
        DROP  Procedure  sp_order_d
    END

GO

CREATE Procedure sp_order_d
    (
        @o_order_id INT,
        @p_transaction_no CHAR(36),
        @o_version_no TIMESTAMP
    )

AS
    UPDATE dbo.T_ORDER 
    SET TRANSACTION_NO = @p_transaction_no ,
        NEED_AUDIT = 0
    WHERE ORDER_ID = @o_order_id
        AND VERSION_NO= @o_version_no    
        
    IF @@ROWCOUNT = 0 
    BEGIN
        RAISERROR ('Version conflicts!',10,1)
    END

    
    DELETE   dbo.T_ORDER
    WHERE ORDER_ID = @o_order_id

GO

2. T_ORDER_DETAIL

FOR Insert: sp_order_detail_i

IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'sp_order_detail_i')
    BEGIN
        DROP  Procedure  sp_order_detail_i
    END

GO

CREATE Procedure sp_order_detail_i
    (
        @p_order_id INT,
        @p_product_id INT,
        @p_product_name VARCHAR(50),
        @p_unit_price MONEY,
        @p_quantity INT,
        @p_created_by VARCHAR(50),
        @p_created_on DATETIME,
        @p_last_updated_by VARCHAR(50),
        @p_last_updated_on DATETIME,
        @p_transaction_no CHAR(36)        
    )

AS

INSERT INTO [dbo].[T_ORDER_DETAIL]
           ([ORDER_ID]
           ,[PRODUCT_ID]
           ,[PRODUCT_NAME]
           ,[UNIT_PRICE]
           ,[QUANTITY]
           ,[CREATED_BY]
           ,[CREATED_ON]
           ,[LAST_UPDATED_BY]
           ,[LAST_UPDATED_ON]
           ,[TRANSACTION_NO])
     VALUES
           (@p_order_id,
            @p_product_id,
            @p_product_name,
            @p_unit_price,
            @p_quantity,
            @p_created_by ,
            @p_created_on ,
            @p_last_updated_by ,
            @p_last_updated_on ,
            @p_transaction_no)
            
IF @@ROWCOUNT = 0 
BEGIN
    RAISERROR ('Version conflicts!',10,1)
END
GO

For Update: sp_order_detail_u

IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'sp_order_detail_u')
    BEGIN
        DROP  Procedure  sp_order_detail_u
    END

GO

CREATE Procedure sp_order_detail_u
    (
        @o_order_id INT,
        @o_product_id INT,
        @p_product_name VARCHAR(50),
        @p_unit_price MONEY,
        @p_quantity INT,        
        @p_last_updated_by VARCHAR(50),
        @p_last_updated_on DATETIME,
        @p_transaction_no CHAR(36),
        @o_version_no TIMESTAMP
    )
AS

UPDATE [dbo].[T_ORDER_DETAIL]
   SET [PRODUCT_NAME] =@p_product_name
      ,[UNIT_PRICE] = @p_unit_price
      ,[QUANTITY] = @p_quantity
      ,[LAST_UPDATED_BY] = @p_last_updated_by 
      ,[LAST_UPDATED_ON] = @p_last_updated_on
      ,[TRANSACTION_NO] = @p_transaction_no
 WHERE ORDER_ID = @o_order_id
    AND PRODUCT_ID = @o_product_id
    AND VERSION_NO = @o_version_no
    
IF @@ROWCOUNT = 0 
BEGIN
    RAISERROR ('Version conflicts!',10,1)
END
     
GO

For Delete: sp_order_detail_d

IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'sp_order_detail_d')
    BEGIN
        DROP  Procedure  sp_order_detail_d
    END

GO

CREATE Procedure sp_order_detail_d
    (
        @o_order_id INT,
        @o_product_id INT,        
        @p_transaction_no CHAR(36),
        @o_version_no TIMESTAMP
    )
AS

UPDATE [dbo].[T_ORDER_DETAIL] 
SET TRANSACTION_NO = @p_transaction_no, 
    NEED_AUDIT=0
WHERE ORDER_ID = @o_order_id
    AND PRODUCT_ID = @o_product_id
    AND VERSION_NO = @o_version_no    
    
IF @@ROWCOUNT = 0 
BEGIN
    RAISERROR ('Version conflicts!',10,1)
END

DELETE FROM [dbo].[T_ORDER_DETAIL]
WHERE ORDER_ID = @o_order_id
    AND PRODUCT_ID = @o_product_id

GO
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2007-04-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档