こんにちは、スタックオーバーフローの善良な人々
UPDATEクエリが実行のために送信される前に、UPDATE_TSフィールドのタイムスタンプを追加する必要がある監査目的で、SQL SERVER 2008 R2のテーブルのトリガーに取り組んでいます。その結果、クエリで更新する元の値に加えて、トリガーによって設定された UPDATE_TS の追加の値で更新が行われます。
内部結合は、トリガーを使用しない場合と比較して、トリガーのパフォーマンスの点でそれほど重くないと聞いたので、この質問も編集しました。これにより、トリガーの内部結合を回避するのではなく、トリガーに追加のオーバーヘッドが追加されるかどうかはわかりません。
私が取り組んでいる例は以下のとおりです。助けと提案をありがとう!
例のテーブルは MY_TABLE と呼ばれます。
CREATE TABLE [myschema].[MY_TABLE](
[MY_TABLE_ID] [bigint] IDENTITY(1,1) NOT NULL,
[FIELD_TO_UPDATE] [varchar](255) NOT NULL,
[CREATE_TS] [datetime] NULL,
[UPDATE_TS] [datetime] NULL),
PRIMARY KEY (MY_TABLE_ID))
作成するトリガー:
CREATE TRIGGER [myschema].[my_table_update_ts_trigger] ON [mydb].[myschema].[MY_TABLE]
INSTEAD OF UPDATE
AS
BEGIN
UPDATE INTO MY_TABLE ([FIELD_TO_UPDATE],[UPDATE_TS])
SELECT ins.FIELD_TO_UPDATE, GETDATE() FROM INSERTED as ins
END