如何在插入重复记录时在表上写入触发器,然后将这些记录插入到其他表中

时间:2014-01-22 12:49:14

标签: sql-server ssis

我正在进行VB加载和SSIS加载。因此,从这些加载数据插入到数据库表中。我需要查找是否有任何重复的记录插入表中。如果任何重复记录进入表中,那么我需要在插入重复记录时触发一个触发器,我需要将相同的记录插入到另一个表中。

例如,y VB load或SSIS load正在将记录插入Table1。所以我需要找到是否有任何重复的记录插入table1。如果插入,那么我需要触发一个触发器,并需要将该重复记录插入Table2。

请建议解决方案。 你的帮助真的很感激。 提前致谢

2 个答案:

答案 0 :(得分:1)

您最好的选择是在桌面上创建INSTEAD OF INSERT触发器。

在触发器内部,您可以检查记录是否已存在并将其插入另一个表或继续插入。

答案 1 :(得分:0)

这是一个代替触发器的例子。我假设你只想要每个副本的一个副本。 (我假设'名称'是LoadTable中用于检测重复项的唯一密钥)

CREATE TRIGGER tCheckDupes ON LoadTable INSTEAD OF INSERT
AS BEGIN
    INSERT INTO DupesTable(Name)
        SELECT DISTINCT i.Name FROM INSERTED i
            INNER JOIN LoadTable lt
            ON lt.NAME = i.NAME;

    -- Because this is an instead of trigger, you need to do the actual insert as well.
    INSERT INTO LoadTable(Name)
        SELECT Name FROM INSERTED i;
END

Fiddle here