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 Server

插入数据库表中一条记录同时也插入另一个表中的SQL语句怎么写

触发器在 SQL Server 的 BulkCopy 中不起作用

sql server 触发器 从一个表添加到另个表是否两个表对应的字段必须相同呢

sql插入的操作

Oracle:计算并插入到其他表触发器/过程