1

私はSQLトリガーの作成にまったく慣れておらず、必要に応じてしばらくの間動作していましたが、特定の条件が満たされた場合にのみ起動するように、トリガーにwhere句を追加したいと思います。

ContextDN like '%FA 2012%'この特定のシナリオでは、トリガーが起動するかどうかを確認します。これが私の現在のトリガーです:

CREATE TRIGGER [dbo].[setAsMoodle]
ON [dbo].[LMS_Section]
For Insert
As
INSERT INTO [dbo].[CUS_LmsSection_LmsProxy] (LMSSectionID, LMSProxyID, LMSSectionCtxDN)
select  SectionID , 'DEE76E47-25E6-459B-9D38-1BCAFA44077A', ContextDN from inserted

これを行う方法について何か提案はありますか?

4

3 に答える 3

2

挿入ステートメントの最後にwhereを置くだけです

USE ICS_NET; 

GO 
CREATE TRIGGER [dbo].[setAsMoodle] 
ON [dbo].[LMS_Section] 
For Insert 
As 
INSERT INTO [dbo].[CUS_LmsSection_LmsProxy] (LMSSectionID, LMSProxyID, LMSSectionCtxDN) 
select  SectionID , 'DEE76E47-25E6-459B-9D38-1BCAFA44077A', ContextDN from inserted
where ContextDN like '%FA 2012%'

トリガーは常に起動しますが、条件に一致する行のみが挿入されます。

バッチ挿入ではトリガーが一度に複数の行に対して起動する可能性があるため、これは重要です。そのため、トリガーを選択的に実行することはできません。

于 2012-08-02T14:06:35.353 に答える
1

トリガーは常に発火します。

挿入/選択ステートメントにwhere句を配置する必要があります

INSERT INTO [dbo].[CUS_LmsSection_LmsProxy] (LMSSectionID, LMSProxyID, LMSSectionCtxDN) 
select  SectionID , 'DEE76E47-25E6-459B-9D38-1BCAFA44077A', ContextDN from inserted 
where ContextDN like '%FA 2012%'
于 2012-08-02T14:05:49.393 に答える
0

トリガーのステートメントには句を含めることができるWHEREため、ステートメントに句を追加するだけで済みますWHERE

USE ICS_NET;

GO
CREATE TRIGGER [dbo].[setAsMoodle]
ON [dbo].[LMS_Section]
For Insert
As
INSERT INTO [dbo].[CUS_LmsSection_LmsProxy] (LMSSectionID, LMSProxyID, LMSSectionCtxDN)
select  SectionID , 'DEE76E47-25E6-459B-9D38-1BCAFA44077A', ContextDN 
from inserted
WHERE 'ContextDN' like '%FA 2012%'
于 2012-08-02T14:06:43.827 に答える