INSERTがCUSTOMERテーブルで発生するたびに、 "StoredProcedure1"を呼び出す必要があり、UPDATEがCUSTOMERテーブルで発生するたびに、 "StoredProcedure2"を呼び出す必要があります引き金。 トリガーで挿入か更新かを判断する方法 SQL Server 2008から。
解決方法を教えてくれる人がいますか?
コード:
CREATE TRIGGER Notifications ON CUSTOMER
FOR INSERT,UPDATE
AS
BEGIN
DECLARE @recordId varchar(20);
set @recordId= new.Id;
//if trigger is insert at the time I call to SP1
EXEC StoredProcedure1 @recordId
//if trigger is Upadeted at the time I call to SP2
EXEC StoredProcedure2 @recordId
END
UPDATE,INSERT
のみなので、次のように言うことができます。
IF EXISTS (SELECT 1 FROM deleted)
-- update
ELSE
-- insert
しかし、もっと大きな問題があります。 new.Id
のようなものはなく、挿入または更新は複数の行に影響を与える可能性があります(一部のプラットフォームでは、トリガーは行ごとに起動します。SQLServerでは、トリガーは操作ごとです)。したがって、次のいずれかを行う必要があります。
RecordId
のinserted
値のallのストアドプロシージャを呼び出します。