【问题标题】:Insert deleted rows in trigger在触发器中插入已删除的行
【发布时间】:2012-10-06 15:46:09
【问题描述】:

我需要将表 Table_A 中已删除的行插入到具有相同结构的 Table_B 中
(类似于回收站)但我在 SQL SERVER 触发器方面没有太多经验

CREATE TRIGGER dbo.Table_A_Delete_Instead_Of_Trigger
ON dbo.Table_A
INSTEAD OF DELETE
AS
BEGIN    
     INSERT INTO Table_B 
     SELECT T 

     DELETE T                  
END

请放过我的经验之湖。谢谢。

【问题讨论】:

    标签: sql-server-2005 triggers


    【解决方案1】:

    您不需要“INSTEAD OF”触发器,您需要一个“AFTER”触发器。

    给定一个表 TableA...

    CREATE TABLE [dbo].[TableA](
        [Col1] [varchar](50) NOT NULL,
        [Col2] [varchar](50) NOT NULL
    ) ON [PRIMARY]
    

    以及对应的TableB...

    CREATE TABLE [dbo].[TableB](
        [Col1] [varchar](50) NOT NULL,
        [Col2] [varchar](50) NOT NULL
    ) ON [PRIMARY]
    

    那么下面的触发器会做你想做的事:

    CREATE TRIGGER trg_TableA_Archive 
    ON  TableA
    AFTER DELETE
    AS 
    
        INSERT INTO TableB
        SELECT *
        FROM deleted
    GO
    

    【讨论】:

      【解决方案2】:

      试试这个:

      CREATE TRIGGER dbo.Table_A_Delete_Instead_Of_Trigger
      ON dbo.Table_A
      AFTER DELETE
      AS
      BEGIN    
           INSERT INTO Table_B 
           SELECT * FROM 
           DELETED;          
      END
      

      我认为在这种情况下您不需要代替触发器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-14
        • 2010-12-28
        • 2011-05-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多