使用触发器的SQL Server 2005历史记录表
我有一个表并希望插入正在更新或删除的记录的当前值。使用触发器的SQL Server 2005历史记录表
我试图在更新前和删除前创建触发器,但SQL Server 2005不喜欢前面的单词。
我如何得到这个工作?
我想触发取当前记录,并将其复制到历史表是基表与dateBackedUp
两个附加字段(即需要GETDATE())和场称为action
镜(即采取行动“更新”或删除“)
请帮助
SQL Server不具有BEFORE INSERT
或BEFORE DELETE
的概念。这些审计操作实际上并不需要在行动之前执行,大多数情况下 - 只需使用已有的触发器即AFTER INSERT
和AFTER UPDATE
即可。
使用已删除的表工作,它 给了我将要 更新的数据。插入的表格提供了 新的值...不是我想要 进行记录的那些值。
当你做一个AFTER UPDATE
触发时,Inserted
伪表中包含的新的价值观 - 与Deleted
表包含旧值。因此,对于AFTER UPDATE
触发器,您可以访问两个伪表并获取旧值和新值。
AFTER INSERT
触发器只能访问Inserted
伪表,其中包含插入的值。
AFTER DELETE
触发器只能访问Deleted
伪表,其中包含已删除的行的值。
你并不需要使用before
关键字。您可以像平常一样创建一个触发器,然后从deleted
表中选择,该表在触发器被...触发时创建。
如
create trigger Audit
on tblCustomers
after update, delete
insert into tblAudit
select * from deleted;
(未经测试,因为我不这里有一个SQL服务器,但如果不工作,那么对于Create Trigger
的BOL条目应该告诉你关于deleted
表)
create TRIGGER [update_Project] ON Project
FOR UPDATE
AS
INSERT project_history
SELECT * FROM deleted
使用已删除的表格的作品,因为它给了我将被更新的数据。插入的表提供了新的值...不是我想要记录的值。
如果您发布的是代码或XML,**请**在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码”按钮(101 010),以良好地格式化和语法突出显示它!另外:您应该通过编辑**更新**原始问题,而不是自己添加“虚拟”答案...... – 2010-09-15 16:46:28
请发布您正在尝试的代码。 – 2010-09-15 15:31:57