【问题标题】:SQL Trigger Looping insert to another tableSQL触发器循环插入到另一个表
【发布时间】: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()

【问题讨论】:

    标签: sql sql-server triggers database-trigger


    【解决方案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
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多