📜  在不使用触发器的情况下捕获 SQL Server 中已删除的行

📅  最后修改于: 2022-05-13 01:55:24.021000             🧑  作者: Mango

在不使用触发器的情况下捕获 SQL Server 中已删除的行

介绍 :

使用触发器有时可能既困难又耗时。触发器可能会减慢服务器的输出速度并对系统资源造成额外压力。许多人使用触发器来跟踪已从表中删除的所有数据。我们可能不使用触发器,而是使用另一个过程,如下面的示例所示。请注意,以下安排不能替代删除触发器。另一方面,如果我们只想记录已删除的行,我们可能会使用它而不是触发器。

例子 :
让我们创建两个表——

CREATE TABLE GeekTab1 (Id1 INT, Name1 VARCHAR(100))
GO
CREATE TABLE GeekTab2 (Id2 INT, Name2 VARCHAR(100))
GO

将示例数据插入表中 –

INSERT INTO GeekTab1 (Id1, Name1)
VALUES(1,'Khushi'), (2, 'Komal')
GO

从表中选择数据——



Select * from GeekTab1
GO

输出 -

Id1Name1
1Khushi
2Komal

从 GeekTab1 中删除并插入 GeekTab2 –

DELETE FROM GeekTab1
OUTPUT deleted.Id1, deleted.Name1
INTO GeekTab2
WHERE Id1 = 1
GO

从两个表中选择数据 -

SELECT * FROM GeekTab1;
GO
SELECT * FROM GeekTab2;
GO

输出 -

极客Tab1

Id1Name1
2Komal

极客Tab2

Id2Name2
1Khushi

结论 :
上述案例中的 DELETE 语句中使用了 OUTPUT 子句,它记录了从 GeekTab1 中删除的语句。