如何从不同的表中获取更新的列名,并在SQL Server的单个历史记录表中插入带有列名的数据?

时间:2012-03-20 04:53:23

标签: sql sql-server

我有一个如下所示的历史表

CREATE TABLE [dbo].[t_PettyCash_History] 
(
    [TableName] [varchar] (500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [ColumnName] [varchar] (500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [PreviousValue] [varchar] (500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [CurrentValue] [varchar] (500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [UpdatedBy] [varchar] (500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
    [UpdateDate] [varchar] (500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL 
)

我要做的是编写一个触发器或stored_procedure,它将执行以下操作

  1. 选择要更新的表的名称
  2. 选择插入,更新或删除数据的列的名称
  3. 然后在上表中插入类似

    的值
    TableName  ColumnName  PreviousValue   CurrentValue  UpdatedBy   UpdateDate
    t_Table1        Col1        XXX             YYY        A       '20-Mar-2012'
    
  4. 提前致谢!

1 个答案:

答案 0 :(得分:0)

同意 Karl ,目前正在使用个人历史记录表来跟踪每个表的更改。也就是说,为每个表创建历史表,并在主表上写入触发器,用于插入,更新和删除操作。