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
ご質問の前に、列の種類を変更することはできません。
※本物の景品ではありません