SQL触发器循环插入到另一个表
Posted
技术标签:
【中文标题】SQL触发器循环插入到另一个表【英文标题】:SQL Trigger Looping insert to another table 【发布时间】:2019-02-06 12:00:28 【问题描述】:目前正在处理特定数据行的更新和插入触发器。
但是,我对这些细节有困难:
Table1 带字段
EmployeeNumber | FirstName | MiddleName | LastName
Table2 带字段:
EmployeeNumber | Value | FieldName | DateEntry
我需要做的是,每当表1中声明的字段发生变化时,都会插入到表2中。
示例: 在 Table1 EmployeeNumber 100 中,将他的 FirstName 值从 John 更改为 Jhon,将 LastName 从 Mark 更改为 Marcus。
Table2 的条目应如下所示:
EmployeeNumber | Value | FieldName | DateEntry
100 | John | FirstName | Getdate()
100 | Mark | LastName | Getdate()
【问题讨论】:
【参考方案1】:如果我正确理解了问题:
CREATE TRIGGER NameTrigger
ON Table1
AFTER UPDATE
AS
INSERT INTO Table2 (EmployeeNumber, Value, FieldName, DateEntry)
SELECT d.EmployeeNumber, d.Firstname, N'FirstName', GETDATE()
FROM deleted as d
INSERT INTO Table2 (EmployeeNumber, Value, FieldName, DateEntry)
SELECT d.EmployeeNumber, d.Lastname, N'Lastname', GETDATE()
FROM deleted as d
【讨论】:
这可能会更好地使用逻辑来旋转 1 个数据集中的数据,而不是使用 2 个INSERT
语句。尤其是如果来自 deleted
的数据集很大并且 LastName 和 FirstName 的值都为“相邻”(我们知道,该表没有 ID,但它应该这样做)很重要。
我不太明白,你有例子吗?
当然:db<>fiddle以上是关于SQL触发器循环插入到另一个表的主要内容,如果未能解决你的问题,请参考以下文章
插入数据库表中一条记录同时也插入另一个表中的SQL语句怎么写
触发器在 SQL Server 的 BulkCopy 中不起作用