1

こんにちは、スタックオーバーフローの善良な人々

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
4

2 に答える 2