递归或语句SQL Server 2016



我正在考虑创建一个相对简单的插入语句,如果表有任何更改,该语句将插入新记录。我遇到的问题是,有600多列需要检查。

更多详细信息:主报告表每15分钟从前端应用程序进行一次更新,使用SQL进程来推动更改,但是它额外编写了数据,并且无法保持更改日志。我无法控制任何。

第二个表(我的表(是DWH表,它将对更改进行审核。因此,我使用一个内在加入t1.AccountNo = t2.AccountNo and t1.Field1 <> t.2Field1,然后添加或添加下一个字段t1.AccountNo = t2.AccountNo and t1.Field2 <> t.2Field2

考虑到列的数量,是否有更好的方法获得所需的结果?

您可以尝试其他方法。

在主表上创建一个触发器以进行更新和删除。此触发器在数据更改之前将已经在DWH表中的表中的数据复制到了您的DWH表。

create Trigger [nameupdate] on [yourtable] after update
as
insert into [dwh]
select 
      getdate() as [ChangeDate]
      ,'update' as [Action]
      ,SYSTEM_USER as [User]
      ,d.[ID]
      ,d.[...]
 from deleted d 
GO

delete

相同
create Trigger [namedelete] on [yourtable] after delete
[...]

我的DWH表有3列用于跟踪,并包含主表中的所有列。

CREATE TABLE [dwh](
    [ID] [int] IDENTITY(1,1) NOT NULL Primary key,
    [ChangeDate] [datetime] NOT NULL,
    [Action] [varchar](50) NOT NULL,
    [User] [nvarchar](128) NOT NULL,
    [...]

相关内容

  • 没有找到相关文章

最新更新