我的应用程序有两个表(我试图创建一个bug跟踪器)。一个我可以添加一个记录/问题和一个问题的历史。在SQL Server上插入触发器以更改/审计历史记录
因此,第二个(Bugs_Shadow)表将与第一个(Bugs)一起创建新记录,然后,当有人尝试修复时,我可以更新表1上的问题。单击更新时,我希望它将整个更新行添加到第二个表,但也保留原始记录。因此,无论何时进行更改,它都会在Bugs_Shadow表中创建一条新记录。我希望这是有道理的?
我创造了这个触发:
CREATE TRIGGER [tr_Bugs_Insert]
ON [dbo].[Bugs]
AFTER UPDATE, INSERT
AS
BEGIN
INSERT INTO Bugs_Shadow (BugID, [User], Date, Subject, Description, [Source Code], [Current State])
SELECT BugID, [User], Date, Subject, Description, [Source Code], [Current State]
FROM Bugs
END
GO
它的工作这么远成在第二表所述相同条目,但是当我更新的第一个表中的条目,它做同样的事情在第2而我希望它创建一个与用户所做更改相同的新记录。
希望有一些帮助。这是我第一次尝试触发器,我花了一段时间才到达这个阶段。
感谢
感谢您的快速响应。但是,由于我得到以下错误:SQL80001:'BEFORE'附近的语法不正确。有任何想法吗? –
它似乎期待'AFTER'而不是'BEFORE' –
我的不好,MS SQL不支持BEFORE触发器。看到我更新的答案 – Kenneth