Sql server 返回已删除项目的ID列表

Sql server 返回已删除项目的ID列表,sql-server,Sql Server,我不确定这是不可能的,还是我无法找到解决办法 我正在尝试编写一个SQL存储过程,该过程将删除许多项,并返回已删除项的唯一标识符列表 通过使用临时表,我可以添加选择所有要删除的项目,将id添加到临时表,然后删除临时表中具有id的所有项目,然后返回临时表中的所有id 我想避免这样做,有没有更好的方法可以在不需要临时表的情况下删除并返回所有ID,并且不向db进行多次调用 欢迎任何想法,如果有类似的帖子,请直接告诉我。(我找不到一个)下面是您想要实现的一个示例: create table your_ta

我不确定这是不可能的,还是我无法找到解决办法

我正在尝试编写一个SQL存储过程,该过程将删除许多项,并返回已删除项的唯一标识符列表

通过使用临时表,我可以添加选择所有要删除的项目,将id添加到临时表,然后删除临时表中具有id的所有项目,然后返回临时表中的所有id

我想避免这样做,有没有更好的方法可以在不需要临时表的情况下删除并返回所有ID,并且不向db进行多次调用


欢迎任何想法,如果有类似的帖子,请直接告诉我。(我找不到一个)

下面是您想要实现的一个示例:

create table your_table 
(
    id int identity(1, 1) primary key, 
    value varchar(100)
);

insert into your_table (value) values
('hello'), ('from'), ('Mars'), ('!!!!');

create proc dbo.deleteByChar
(
    @char char(1)
) as
begin
    delete from your_table
    output deleted.id --> OUTPUT clause as @Vishal_Gajjar suggested
    where value like '%' + @char + '%';
end
用法:

select * from your_table;
exec dbo.deleteByChar 'o';
select * from your_table;
输出:

id  value
---------
1   hello
2   from
3   Mars
4   !!!!

id
--
1
2

id  value
---------
3   Mars
4   !!!!

如果您使用的是trigger,则会有一个
已删除的
虚拟表,您可以在其中找到id-s。请注意,在
更新
的情况下,id-s将再次存在于
已删除的
表中。要检测
UPDATE
您可以加入
inserted
表。

可能重复的have a look at OUTPUT子句,它可以与DELETE一起使用以返回已删除的数据我不能使用触发器。这很好,但仍然有第二个表,无法避免这种情况。如果您使用“OUTPUT deleted.id”而不是“OUTPUT deleted.id into@deleted\u id”怎么办@Vishal Gajjar您完全正确地实现了!