更新或插入时的MSSQL触发器

时间:2017-06-23 21:28:09

标签: sql sql-server triggers

我正在尝试创建一个触发器,只要插入或更新table1中的记录,就会将记录插入到table2中。这个想法是创建一个记录在表1中的每个“状态”的历史记录(table2)。

由于

2 个答案:

答案 0 :(得分:0)

你可以,但你必须记住;你不能多行更新或插入。

这是一个UPDATE触发器:

CREATE TRIGGER [dbo].[trVEHICLE_DEBUGLOG]
ON [dbo].[VEHICLE] AFTER UPDATE
AS
    DECLARE @ID BIGINT = (SELECT ID FROM INSERTED)

    DECLARE @NEWVALUE BIGINT = (SELECT VEHICLEGROUPID FROM INSERTED)
    DECLARE @OLDVALUE BIGINT = (SELECT VEHICLEGROUPID FROM DELETED WHERE ID = @ID)

    IF (@NEWVALUE <> @OLDVALUE) BEGIN
        INSERT INTO dbo.DEBUGLOG(DEBUGTABLE, DEBUGCOLUMN, DEBUGID, DEBUGOLDVALUE, DEBUGNEWVALUE, DEBUGDATETIME)
        VALUES
        ('VEHICLE','VEHICLEGROUPID', @ID, @OLDVALUE, @NEWVALUE, GETDATE())
    END

GO

答案 1 :(得分:0)

在INSERT和UPDATE上使用触发器是一种很好的做法。在创建之前,请确保您理解它。您可以使用以下链接作为参考

https://docs.microsoft.com/en-us/sql/t-sql/statements/create-trigger-transact-sql