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