1

C# で SQL Server 2008 Express の INSERT トリガーを作成する場合: 以下の SqlTrigger 注釈が必要であることがわかりました。

[SqlTrigger(Name = "SomeMethod", Target = TABLE_NAME, Event = "INSTEAD OF INSERT")]
public static void SomeMethod() { ... }

ターゲット仕様は厄介な要件のようです。このトリガーをさまざまなテーブルで実行できるようにしたいと考えています。ターゲットを指定しないようにしたり、SQL の作成時にオーバーライドしたりする方法はありますか?

この質問に似ています: SQL CLR トリガー - ターゲット/テーブル名を取得 しますが、ターゲットを動的に設定できるようにしたいと考えています。

これを調査する理由は、動作が悪いレガシーコードがあるためです。アセンブリトリガーをシャットダウンせずに、潜在的に問題を診断できるようにしたいと考えています。理想的には、目的のインサートをハイジャックし、いくつかの診断を行ってから、元のアセンブリに戻します。この Target パラメーターによって、これを行うことが制限されていると思います。

4

2 に答える 2

1
于 2012-10-05T06:18:31.540 に答える
0

ターゲットは属性の必須フィールドであるため、指定する必要があり、テーブル名またはデータベース名を指定できますが、実行時に変更することはできません。最大でできることは、トリガーの実行を停止することです。

参照 : http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.server.sqltriggerattribute.target.aspx

于 2012-10-05T03:28:34.980 に答える