【问题标题】:MSSQL Trigger on update or insertMSSQL 在更新或插入时触发
【发布时间】:2017-06-24 21:23:43
【问题描述】:

我正在尝试创建一个触发器,只要插入或更新 table1 中的记录,该触发器就会将记录插入 table2。我们的想法是为 table1 中记录所经历的每个“状态”创建一个历史日志 (table2)。

谢谢

【问题讨论】:

标签: sql sql-server triggers


【解决方案1】:

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

这是一个 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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-22
      • 1970-01-01
      • 2013-01-24
      • 2018-02-20
      相关资源
      最近更新 更多