SQL-Server 2000 で設計された DB がありますが、SQL-Server 2008 で実行されています。テーブルの 1 つにTEXT
メモを含む列があり、この列に加えられた変更の数を追跡する必要があります。
現在、挿入された値から値を挿入するトリガーがあります。
ALTER TRIGGER [dbo].[NotesEdited]
ON [dbo].[NOTESTABLE]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @UserID VarChar(4);
DECLARE @DateEdited datetime;
DECLARE @NotesAfter varchar(max);
DECLARE @PRIMARY float;
SELECT @UserID = user_edited FROM inserted;
SELECT @PRIMARY = note_primary FROM inserted;
SELECT @DateEdited = GetDate();
SELECT @NotesAfter = (select note from NOTESTABLE where note_primary = @PRIMARY)
IF UPDATE(note)
BEGIN
insert into NotesEditHistory (DateEdited,NotesAfter,UserID) values(@DateEdited,@NotesAfter,@UserID)
END
END
大きな問題は、ソフトウェアがテーブルの 2 ~ 10 回の更新を実行することです。そのうちの 1 回だけがnote
フィールドに変更を加えますが、テーブルに 2 ~ 10 回の挿入が行われます。
これは行を使用して回避できると思いましたが、IF UPDATE(note)
これは更新ごとに実行されているようで、IF UPDATE(<FIELD>)
常に true に検証されます。これは、使用されているソフトウェアに関係していると思います。
$64,000* 質問:
列のまたは値にtext
アクセスできない場合、更新後トリガーで列の更新をテストするにはどうすればよいですか?deleted
inserted
ご質問の前に、列の種類を変更することはできません。
※本物の景品ではありません