我将此触发器作为提示,我想知道它如何与更新一起使用。每次在我的主表上有更新或插入操作时,它都应该创建一条记录。
create trigger tblTriggerAuditRecord on tblOrders
after **update, insert**
as
begin
insert into tblOrdersAudit
(OrderID, OrderApprovalDateTime, OrderStatus, UpdatedBy, UpdatedOn )
select i.OrderID, i.OrderApprovalDateTime, i.OrderStatus, SUSER_SNAME(), getdate()
from tblOrders t
inner join **inserted** i on t.OrderID=i.OrderID
end
go
根据我的理解,它将所有插入记录插入到主表中的审计中包含的时间戳和用户,但更新如何?如果我更新主表中的行怎么办?我不应该在更新的记录上加入吗?
希望我的问题很清楚,非常感谢你的帮助!
答案 0 :(得分:0)
触发触发器时没有表updated
。如果有更新,您可以在表deleted
中找到主表中的旧值,并在表inserted
中找到新值(如插入的话)。< / p>
这与此示例中的相同:
UPDATE tabEmployee SET Salary = Salary * 1.05
OUTPUT inserted.EmployeeName, deleted.Salary, inserted.Salary
INTO tabSalaryHistory (EmployeeName, OldSalary, NewSalary)
在这个例子中,每个员工都有加薪。增加前的值存储在输出表deleted
中,新值存储在inserted
中。
请查看this以便更好地理解。