有一个由触发器操纵的审计表。就像是:
create table YourAuditTable
(
-- all of your source table's columns
CreateDate datetime not null,
DeleteDate datetime null
)
go
你的触发器看起来像这样:
create trigger AuditYourTable
on dbo.YourTable
after insert, update, delete
as
if exists(select * from inserted)
begin
if exists(select * from deleted)
begin
-- this is for an update
update YourAuditTable
set DeleteDate = getdate()
where YourIDCol in (select YourIDCol from deleted)
end
-- this is just for an insert
insert into YourAuditTable
select *, getdate() as CreateDate
from inserted
end
else
begin
-- this is just for a delete
update YourAuditTable
set DeleteDate = getdate()
where YourIDCol in (select YourIDCol from deleted)
end
go
这将允许您做的是查询您的审计表的时间点。换句话说,仅用于DATEDIFF
确定是否在该给定时间点之前创建了行,并在其之后删除(或根本不删除)。
编辑
要查询您的审计表以获取时间点数据:
select *
from YourAuditTable
where CreateDate <= @PointInTimeDateTime
and
(
DeleteDate is null or
DeleteDate > @PointInTimeDateTime
)