首页 > 解决方案 > 更新不同表中的单个列后的 SQL 触发器

问题描述

我正在创建一个 SQL 触发器,我需要在第一个表上更新记录后将它插入到另一个表中。

我得到了以下表格。

排位表:

排队表

仓表

在此处输入图像描述

到目前为止,我有以下无法编译的 SQL 查询。

CREATE TRIGGER dbo.MoveBinToQueue
    ON dbo.Bins
    AFTER UPDATE
AS
IF UPDATE(Status_StatusId)
BEGIN
    INSERT INTO dbo.Queues
    (
        Prio,
        Time
        Bin_BinId,
        Goal_GoalId
    )
    SELECT
         20,
         GETDATE(),
         inserted.Status_StatusId,
         inserted.Goal_GoalId
         )
END

标签: sqlsql-servertriggers

解决方案


你需要一个FROM子句:

CREATE TRIGGER dbo.MoveBinToQueue
    ON dbo.Bins
    AFTER UPDATE
AS
BEGIN
    IF UPDATE(Status_StatusId)
    BEGIN
        INSERT INTO dbo.Queues (Prio, Time, Bin_BinId, Goal_GoalId )
            SELECT 20, GETDATE(), inserted.Status_StatusId, inserted.Goal_GoalId
            FROM inserted;
    END
END;

推荐阅读