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怎么实现?

解决方案 »

  1.   

    這個功能使用事務應該不方便,一旦刪除之後,你怎么知道之前刪除的記錄是否有100呢?所以應該事先判斷IF EXISTS(SELECT * FROM FDD_Country WHERE CountryID=100)
    BEGIN
       DELETE FROM FDD_Country WHERE CountryID IN(1,2,3,100)
    END
      

  2.   

    DELETE   FROM   FDD_Country   WHERE     EXIST  CountryID IN(   1,2,3,100) 不知道可以不
      

  3.   

    to:boblaw先谢谢你提供了一个方案,不过看来是我描述的不太清楚要删除的ID都是不确定的,那不是在删除之前每个ID都要判断一次?to:xuyang840117是exists,不过貌似还是有语法错误
      

  4.   

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

  5.   

    是否可以先统计所有id为1,2,3,100的记录数,然后删除后再统计delete所影响的记录数,与前边的统计结果进行比较,如果不符则rollback.
      

  6.   

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

  7.   

    执行后来查看程序执行影响行数,如果影响行数与in的参数个数不等就rollback!select @@rowcount