2016-04-25 24 views
0

私はこのトリガーをヒントとして得ました。更新とどのように機能するか知りたいと思います。メインテーブルに更新または挿入アクションがあるたびにレコードを作成することになっています。監査証跡トリガーの更新句

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

トリガーが発生するとテーブルupdatedはありません。更新の場合、テーブルdeletedにあるメインテーブルの古い値と、新しいテーブルはテーブルinsertedの(挿入の場合のように)存在します。この例のように同じです

:この例では

UPDATE tabEmployee SET Salary = Salary * 1.05 
OUTPUT inserted.EmployeeName, deleted.Salary, inserted.Salary 
INTO tabSalaryHistory (EmployeeName, OldSalary, NewSalary) 

は、すべての従業員が昇給を取得します。増加前の値は出力テーブルdeletedに格納され、新しい値はinsertedに格納されます。

をご覧ください。

+0

いいえ、完璧なdiiN_は説明に感謝して、私はそれを知らなかった! –

+0

完了! :) 再度、感謝します –

関連する問題