SQL语句,删除多条记录

harryheart 2007-11-07 10:56:39
DELETE FROM FDD_Country WHERE CountryID IN( 1,2,3,100)

要实现的功能基本同上,删除FDD_Country表中CountryID 为1,2,3,100的记录.
如果数据库中存在ID为1,2,3的记录,不存在ID为100的记录时需要rollback怎么实现?
...全文
552 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiu147bbcc 2009-09-16
  • 打赏
  • 举报
回复
我试了下可以啊~!
jlgxy 2007-11-07
  • 打赏
  • 举报
回复
执行后来查看程序执行影响行数,如果影响行数与in的参数个数不等就rollback!

select @@rowcount
harryheart 2007-11-07
  • 打赏
  • 举报
回复
综合了一下大家的想法
决定用查询来统计记录数和传入的记录数比较,如果一样才执行删除,应该可以了,给分
shoushii 2007-11-07
  • 打赏
  • 举报
回复
IF EXISTS(SELECT * FROM FDD_Country WHERE CountryID=100)
BEGIN
DELETE FROM FDD_Country WHERE CountryID IN(1,2,3,100)
END
zzc0527 2007-11-07
  • 打赏
  • 举报
回复
是否可以先统计所有id为1,2,3,100的记录数,然后删除后再统计delete所影响的记录数,与前边的统计结果进行比较,如果不符则rollback.
NewUser2008 2007-11-07
  • 打赏
  • 举报
回复
IF EXISTS(SELECT * FROM FDD_Country WHERE CountryID=100)
BEGIN
DELETE FROM FDD_Country WHERE CountryID IN(1,2,3,100)
END
harryheart 2007-11-07
  • 打赏
  • 举报
回复
to:boblaw

先谢谢你提供了一个方案,不过看来是我描述的不太清楚

要删除的ID都是不确定的,那不是在删除之前每个ID都要判断一次?

to:xuyang840117

是exists,不过貌似还是有语法错误
xuyang840117 2007-11-07
  • 打赏
  • 举报
回复
DELETE FROM FDD_Country WHERE EXIST CountryID IN( 1,2,3,100)

不知道可以不
boblaw 2007-11-07
  • 打赏
  • 举报
回复
這個功能使用事務應該不方便,一旦刪除之後,你怎么知道之前刪除的記錄是否有100呢?所以應該事先判斷

IF EXISTS(SELECT * FROM FDD_Country WHERE CountryID=100)
BEGIN
DELETE FROM FDD_Country WHERE CountryID IN(1,2,3,100)
END

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧