【问题标题】:SQL - trigger select into after update/insertSQL - 更新/插入后触发选择
【发布时间】:2023-03-27 19:42:01
【问题描述】:

我有一张名为Audit_Data 的表,并且不时会有更新。每个更新包含大约 300 行(每行大约 20 列),并且来自同一更新的所有行共享相同的 Audit_ID

我有一个选择,它只提取与我相关的数据。它基本上将 300x20 字段数据转换为一行数据。
有没有办法创建一个 SQL 触发器,对更新的 Audit_Data 表执行选择,并将选定的数据插入到名为 Audit_Final 的表中?

这是我用来提取相关数据的选择语句:

SELECT main.Audit_ID
        ,main.Item_19
        ,main.Item_1
        ,main.Item_7
        ,main.Item_8
        ,Item_17
        ,main.Item_13
        ,macaddr.Item_2
        ,macaddr.Item_16
        ,t1.Item_1
FROM dbo.[Audit_Data] AS main
    LEFT JOIN
    (
        SELECT Audit_ID, Item_2, Item_16
        FROM dbo.[Audit_Data] AS macaddr
        WHERE 
        (Item_2 NOT LIKE 'Hyper-V%')
        AND (Item_17 = 'connected') 
        AND (Item_18 IN ('10000Mbps', '1000MBps') OR ITEM_9 IS NOT NULL AND ITEM_10 IS NOT NULL)
        AND (Item_18 != '100Mbps')
    ) macaddr ON main.Audit_ID = macaddr.Audit_ID
    LEFT JOIN
    (
        SELECT Audit_ID, Category_ID, Item_1, Record_ordinal
        FROM dbo.[Audit_Data] AS t1
        WHERE 
        Item_1 = 'Automatyczna konfiguracja sieci przewodowej' OR Item_1 = 'dot3svc' OR Item_1 = 'Wired AutoConfig'
        AND Item_3 = 'Running'
        AND Category_ID = '4100'
    ) t1 ON main.Audit_ID = t1.Audit_ID
WHERE 
main.Record_Ordinal = '2'
ORDER BY main.Audit_ID

【问题讨论】:

  • 哦,对不起。使用 sql-server 标记更新了初始帖子。
  • 所以您想要的只是在每次表更新后自动执行该选择语句(并将您的输出定向到特定表中),对吗?
  • @BartoszX 精确:)

标签: sql sql-server tsql database-trigger


【解决方案1】:

根据作者的评论,这是这里需要的:

CREATE TRIGGER [TR_Audit_Data] ON [Audit_Data]
AFTER UPDATE
AS
 BEGIN
 INSERT INTO [Audit_Final](cloumn_1, colum_2, ... all columns you have on target table)
 /*
  Paste your select query here
 */
END

【讨论】:

  • 不幸的是它什么也没做。我的意思是,触发器已创建,但我看不到它的效果。
  • 那么您已经创建了该触发器,对 audit_data 进行了更新,但它没有在 audit_final 中插入任何内容?还是没有错误?
  • 最后我不得不使用 AFTER INSERT 而不是 AFTER UPDATE 以使触发器按预期工作,感谢您的帮助!
  • 不客气。如果这解决了您的问题,那么请接受/投票我的答案。
猜你喜欢
  • 2013-05-24
  • 2015-01-15
  • 2012-05-27
  • 2013-01-13
  • 1970-01-01
  • 2018-05-26
  • 2021-05-01
  • 2021-03-08
  • 1970-01-01
相关资源
最近更新 更多