如何组织更新的行记录

时间:2010-08-30 11:27:11

标签: sql-server database logging

我在Sql Server中有一些表。如果更新或删除行,我想记录行。我该如何组织这个过程?

示例表结构:

    [uniqueGUID] [uniqueidentifier] NOT NULL,
    *[kod_a] [nchar](5) NOT NULL,
    *[kod_b] [nchar](5) NOT NULL,
    *[kod_c] [nchar](2) NOT NULL,
    *[kod_d] [nchar](4) NOT NULL,
    [name] [nvarchar](25) NULL,
    [sname] [nvarchar](25) NULL,
    [address] [nvarchar](25) NULL,
    [payment] money NULL

注意:标记的列(kod_a,kod_b,kod_c,kod_d)是唯一的constaint。另一个表也采用相同的结构,列数可能不同。

请原谅。

感谢。

2 个答案:

答案 0 :(得分:0)

旧数据可以使用triggerDeleted table中公开。我将以一个简单的例子来帮助你入门。

create trigger YourTriggerName on YourTable
after update, delete
as
    /* Deleted table contains the "old" values before the update/delete operation */
    insert into YourLoggingTable
        (UniqueGUID, kod_a, ..., payment, DateModified)
        select UniqueGUID, kod_a, ..., payment, getdate()
            from Deleted 
go

答案 1 :(得分:0)

如果所有更新都通过单个存储过程,则可以在更新或删除此表中的数据时创建并执行审计存储过程。

触发很棒,但有时会引起疼痛。如果可能,请避免使用它们