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