我一直在这里查看有关触发器的先前答案,但是找不到我确切需要的答案,但是我敢肯定我的问题已经被问过/回答过。
我试图跟踪对table1中columnA和columnB的任何更改。
如果此值更改,我想通过将现有值和新值插入带有日期的其他表中来跟踪值。
我一直在寻找对插入使用这样的东西,但是不确定如何添加来获取源表(table1)的现有值和新值:
CREATE TRIGGER NewTrigger ON table1 FOR INSERT AS INSERT INTO table2 (columnA , columnB, todaysDate) . . go
我需要使用(我认为)
Before update ON table1 FOR EACH ROW . . . BEGIN
并查看所有更改,然后先插入这些更改,然后在更新后执行相同的操作?
这样的事情应该可以满足您的需求。您将在INSERT下面的语句中插入值,以指示在中执行的操作MyLogTable。
INSERT
MyLogTable
CREATE TRIGGER [dbo].[TRIG_MyTable] ON [dbo].[MyTable] AFTER INSERT, UPDATE AS DECLARE @INS int, @DEL int SELECT @INS = COUNT(*) FROM INSERTED SELECT @DEL = COUNT(*) FROM DELETED IF @INS > 0 AND @DEL > 0 BEGIN -- a record got updated, so log accordingly. INSERT INTO MyLogTable SELECT 'New Values', getdate() FROM INSERTED INSERT INTO MyLogTable SELECT 'Old Values', getdate() FROM DELETED END ELSE BEGIN -- a new record was inserted. INSERT INTO MyLogTable SELECT 'Insert', getdate() FROM INSERTED END
如果你想,你也可以从添加列INSERTED和DELETED你的日志表,以及如果你想捕捉的是得到了插入或更新的实际列值。
INSERTED
DELETED