【问题标题】: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
我认为在这种情况下您不需要代替触发器。