【发布时间】:2017-06-24 21:23:43
【问题描述】:
我正在尝试创建一个触发器,只要插入或更新 table1 中的记录,该触发器就会将记录插入 table2。我们的想法是为 table1 中记录所经历的每个“状态”创建一个历史日志 (table2)。
谢谢
【问题讨论】:
-
太好了。您是否有实际问题或只是与我们分享您的项目描述?
标签: sql sql-server triggers
我正在尝试创建一个触发器,只要插入或更新 table1 中的记录,该触发器就会将记录插入 table2。我们的想法是为 table1 中记录所经历的每个“状态”创建一个历史日志 (table2)。
谢谢
【问题讨论】:
标签: sql sql-server triggers
你可以,但你必须记住;你不能多行更新或插入。
这是一个 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
【讨论】:
在 INSERT 和 UPDATE 上使用触发器是一种很好的做法。在创建一个之前,请确保您很好地理解它。您可以使用以下链接作为参考
https://docs.microsoft.com/en-us/sql/t-sql/statements/create-trigger-transact-sql
【讨论】: