我有一个在 SQL-Server 2000 中设计但在 SQL-Server 2008 中运行的数据库。其中一个表有一个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 次更新,其中只有一次对note
字段进行了更改,但会导致 2-10 次插入到表中。
我认为这可以使用该行解决,IF UPDATE(note)
但似乎每次更新都在运行,IF UPDATE(<FIELD>)
总是验证为真,我想这与正在使用的软件有关。
64,000 美元* 问题:
text
如果我无法访问列的deleted
orinserted
值,如何在更新后触发器中测试列的更新?
在您问之前,我无法更改列类型。
*不是真正的奖品