0

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アクセスできない場合、更新後トリガーで列の更新をテストするにはどうすればよいですか?deletedinserted

ご質問の前に、列の種類を変更することはできません。

本物の景品ではありません

4

1 に答える 1

1

NotesEditHistory.NotesAfter最後に比較しNoteて、等しくない場合は挿入できます

于 2013-02-27T11:46:20.677 に答える