Sql 使用触发器复制更新的行值

Sql 使用触发器复制更新的行值,sql,sql-server,Sql,Sql Server,我有一个配置表,我想在更新后触发同步列值 +----+---------+---------------+-------------+ |type| key | value | dateModified| +----+---------+---------------+-------------+ | 1 | MyAPItok| as7373 | 2019-04-16 | | 2 | MyAPItok| br7345 | 2019

我有一个配置表,我想在更新后触发同步列值

+----+---------+---------------+-------------+
|type| key     |  value        | dateModified| 
+----+---------+---------------+-------------+
|  1 | MyAPItok|     as7373    | 2019-04-16  |   
|  2 | MyAPItok|     br7345    | 2019-04-12  |   
+----+---------+---------------+-------------+
代码:


我试过几种不同的方法,但似乎都不管用。每当我用“MyAPItok”键更新值时,我都希望为具有相同键的每一行分配更新的值和日期修改。有人知道为什么这不起作用吗?

使用CTE进行更新

CREATE OR ALTER TRIGGER [dbo].[SyncAPITokens]
ON [dbo].[tbl_config]
AFTER UPDATE  
AS 
BEGIN
    with q as 
    (
      select  disp.*, 
              i.value value_new,
              i.dateModified dateModified_new

      FROM [dbo].[tbl_config] disp
      INNER JOIN Inserted i 
        ON i.[type] = disp.[type] 
        AND i.[key] = disp.[key] -- use PRIMARY KEY of table!
      WHERE disp.[key] = 'MyAPItok'
    )
    --select * from q
    update q set value = value_new, dateModified = dateModified_new;
END

然后可以切换注释以查看触发器中的结果集,以便进行调试。您可能会发现您的触发器实际上没有任何作用。

预期的结果是什么,问题是什么?
CREATE OR ALTER TRIGGER [dbo].[SyncAPITokens]
ON [dbo].[tbl_config]
AFTER UPDATE  
AS 
BEGIN
    with q as 
    (
      select  disp.*, 
              i.value value_new,
              i.dateModified dateModified_new

      FROM [dbo].[tbl_config] disp
      INNER JOIN Inserted i 
        ON i.[type] = disp.[type] 
        AND i.[key] = disp.[key] -- use PRIMARY KEY of table!
      WHERE disp.[key] = 'MyAPItok'
    )
    --select * from q
    update q set value = value_new, dateModified = dateModified_new;
END