2012-02-03 9 views
1

sql triggerが暗黙的に呼び出されることがわかっています。 私はSQLサーバでトリガを明示的に呼び出すことが可能かどうか疑問に思っていますか?明示的にトリガを呼び出します

もしそうなら、どうすればよいですか?

おかげ

+5

できません。定義上、あなたは欲しい、または必要としてはいけません。それが本当に一般的なロジックの場合は、格納されたprocまたは関数に入れてください。 –

+0

いいえ、なぜあなたにしたいですか? –

+1

これを行うのは非常に悪い考えですが、挿入された列と削除された列を渡す必要があるストアドプロシージャを作成できます。次に、ストアドプロシージャを直接呼び出すことができます。 –

答えて

2

私はそれはあなたが明示的にトリガを呼び出すことによって何を意味するかに依存しているとします。

あなたは、基になるテーブルにデータなしの変更を発射するトリガー引き起こす可能性があります。その結果によって

create table T (ID int not null) 
go 
create trigger T_T on T after insert 
as 
    RAISERROR('Hello',10,1) WITH NOWAIT 
go 
insert into T(ID) 
select 1 where 1=0 

Hello 

(0 row(s) affected) 

言われて、それはチートのビットだとすると、 @Mitch Wheatと共通して、なぜあなたがこれをやろうとしているのだろうと思っています。 「明示的にトリガを呼び出す」が問題の解決策の一部である場合、a)おそらく間違った解決策であり、b)問題が何であるかを知っていれば、より良い解決策を提案できる可能性があります。

関連する問題