从选择中删除,不会导致选择删除任何内容吗?

时间:2016-06-22 13:25:45

标签: sql sql-server tsql

我在存储过程中有一些 console.log(myCategory); 语句来删除其他表中的一些子记录,并最终删除传递给存储过程的ID。

我担心如果与Delete一起使用的某个select语句没有返回会发生什么,这会删除该表上的任何内容吗?

实施例

Delete

2 个答案:

答案 0 :(得分:4)

在案例中(来自您的示例),当SELECT [ID] FROM @PurchaseIDs不会返回任何内容时,tblPurchases不会删除任何内容,因为ID in (empty_set)条件将无法满足。

顺便说一句,你可以自己轻松检查,例如:

declare @t1 table (ID int)

insert into @t1 (ID)
select 1
union all
select 2
union all
select 3

declare @t2 table (ID int)

insert into @t2 (ID)
select 1

delete from @t1 where ID in (select ID from @t2 where ID > 1)
select * from @t1

答案 1 :(得分:0)

答案是否定的,不会删除任何内容。什么都没有"在"一个空的集合,所以什么都不会被删除。