在不使用触发器的情况下捕获 SQL Server 中已删除的行
原文:https://www . geesforgeks . org/capture-deleted-row-in-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
输出–
| Id1 | 名称 1 | | --- | --- | | one | 库希 | | Two | 科马尔 | T27】从极客标签 1 中删除并插入极客标签 2–
DELETE FROM GeekTab1
OUTPUT deleted.Id1, deleted.Name1
INTO GeekTab2
WHERE Id1 = 1
GO
从两个表中选择数据–
SELECT * FROM GeekTab1;
GO
SELECT * FROM GeekTab2;
GO
输出–
geek tab 1
| Id1 | 名称 1 | | --- | --- | | Two | 科马尔 | T21】geek tab 2
| Id2 | 名称 2 | | --- | --- | | one | 库希 | T21】结论: OUTPUT 子句用于上述情况下的 DELETE 语句中,它记录了从 GeekTab1 中删除的语句。
版权属于:月萌API www.moonapi.com,转载请注明出处