我在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。另一个表也采用相同的结构,列数可能不同。
请原谅。感谢。
答案 0 :(得分:0)
旧数据可以使用trigger在Deleted 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)
如果所有更新都通过单个存储过程,则可以在更新或删除此表中的数据时创建并执行审计存储过程。
触发很棒,但有时会引起疼痛。如果可能,请避免使用它们