1

データベースに対して実行されたすべての挿入、更新、および削除操作を格納するテーブルがあります。テーブルは次のようになります。

ID       Created          Operation
 1       2012-05-01       INSERT [SomeTable] (ID, Col1) VALUES (1, 'xyz')
 2       2012-05-01       UPDATE [SomeTable] SET Col1 - 'abc' WHERE ID = 1

等々...

各テーブルでトリガーを使用して、操作クエリを作成するにはどうすればよいですか? 後でテーブルに列を追加する可能性があり、戻ってトリガーを再構築する必要がないため、トリガーの原因となっているテーブル内の列が常にわかっているとは限りません。

これがその始まりかもしれません:

CREATE TRIGGER tr_MyTable_RowInserted ON MyTable
FOR INSERT
AS

DECLARE @columnList nvarchar(4000)

SET @columnList = NULL
SELECT @columnList = COALESCE(@columnList + ', ', '') + [name] FROM sys.columns WHERE Object_ID = Object_ID(N'MyTable')
print @columnList

-- now we have the columns, need to spit out the values that are in the trigger's inserted table

-- then we need to concatenate all of that into a single, syntactically correct SQL string
4

0 に答える 0