2011-12-28 4 views
4

ログ用のトリガーを作成したいのですが、INSERT、UPDATE、またはDELETE.ieのイベント名が必要です。これらのステートメントの1つがクエリの実行に使用されます。トリガーしてロギングを開始します。INSERT、DELETE、UPDATEイベントを使用するトリガーを作成する方法

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
CREATE TRIGGER LogBuses 
ON Bus_table 
AFTER INSERT,DELETE 
AS 
BEGIN 
DECLARE @PlateNo nvarchar(50) 
IF INSERT//something like that-INSERTING- DELETING 
    SELECT @PlateNo=PlateNo from inserted 
insert into Logger (EffectedTable,ActionName,EffectDate,EffectedID) 
VALUES ('Bus_table','Insert',SYSDATETIME(),@PlateNo); 
ELSE IF DELETE 
    SELECT @PlateNo=PlateNo from deleted 
insert into Logger (EffectedTable,ActionName,EffectDate,EffectedID) VALUES ('Bus_table','Insert',SYSDATETIME(),@PlateNo); 

END GO

答えて

9

insertedテーブルとdeletedテーブルを使用します。これは、insertedテーブルだけが入力された場合に挿入され、deletedテーブルが入力された場合は削除され、両方のテーブルが入力された場合は更新されます。テストするにはif exists (select 1 from inserted)を使用してください。

if exists (select 1 from inserted) and exists (select 1 from deleted) 
--update 
else if exists (select 1 from inserted) 
--insert 
else if exists (select 1 from deleted) 
--delete 
+1

ありがとうございました。出来た –

1

必要なデータを渡し、プロシージャを呼び出す記録し、各イベントのトリガ、ストアドプロシージャを作成します。

関連する問題