【问题标题】:SQL Server: How to loop through the Deleted table in update trigger and convert each row into JSONSQL Server:如何在更新触发器中循环删除表并将每一行转换为 JSON
【发布时间】:2020-06-14 13:35:03
【问题描述】:

我创建了一个Update 触发器,它以 JSON 格式获取已删除的行并将它们作为列保存到另一个表中。

CREATE TRIGGER UpdateTrigger on [Table1]
FOR UPDATE 
AS
   DECLARE @json nvarchar(max) = (SELECT * FROM Deleted FOR JSON PATH)
   INSERT INTO [Table2](Id, Record) VALUES (NEWID(), @json);
GO

我想更改逻辑,以便 Table2 表中的每一行都有一个插入 Table2。如何循环遍历 Deleted 表并将每一行转换为 JSON 并将其保存到 Table2

【问题讨论】:

  • 你知道Deleted 表中的列名吗?
  • 是的,我愿意。 1 个唯一标识符、1 个 datetime2、4 个 varchar(max) 列。现在可以伪造列名。

标签: json sql-server database-trigger


【解决方案1】:

您可以尝试以下方法:

CREATE TRIGGER UpdateTrigger on [Table1]
FOR UPDATE 
AS
   INSERT INTO [Table2] (Id, Record) 
   SELECT 
      NEWID(),
      Record = (SELECT Column1, Column2, Column3, Column4, Column5, Column6 FOR JSON PATH)
   FROM Deleted
GO

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-17
    • 1970-01-01
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    • 2011-05-22
    • 1970-01-01
    • 2014-04-20
    相关资源
    最近更新 更多