SQL SERVER中错误delete语句可能误删除所有记录的BUG
SQL SERVER中错误delete语句可能误删除所有记录的BUG
原文摘自【http://blog.sina.com.cn/s/blog_48d560db0100des4.html】
1. 创建表a
create table a(
id int identity(1,1),
a int
)
declare @i int
set @i = 0
while @i<100
begin
insert a(a) select @i+1
set @i=@i+1
end
2.创建表b
create table b (
b int
)
insert b(b) values(1)
3.以下语句是一个错误语句,原意是删除表a中id存在于表b中b字段的记录。应该是
delete a where id in (select b from b)
但一不小心写错了,写成:delete a where id in (select id from b)
4.如果你认为应该有出错提示,那你就错了。你会发现执行成功,以及a表中所有的数据都被删除了。
可惜发到Microsoft Connect并没有人回应这个问题!