我现在要实现对数据库中多个表中相互关联的记录的删除:具体情形如下:
    有A,B 两数据表;
     其中A中至少包含  id,   spec  两个字段.
     ....B........   spec字段;
     意思就是说:A,B两表通过字段SPEC相互关联起来;
     现在我要删除表A,B中的关联记录条件是:当A表的ID等于某值时;
      这个语句在access数据库中是怎么实现的呢???

解决方案 »

  1.   

    在access中建立表A和b的一对多关系(或者其他关系)用关键字段Spec.
    这样你在删除A中的数据时,如果有关联数据在B中,则B中的数据将自动被删除。具体》
    工具->关系
    选中表A和B, 点击添加,关闭
    在关系图中,选择A的spec字段拉到B的Spec字段,出现编辑关系窗口,选择实施参照完整性,选择级连删除相关记录。点击创建即可。
    注意,表B中的spec字段中的值必须在表A的spec字段中有相应的值对应才那创建关系。nice day
      

  2.   

    删除这种表,一定要用事务来完成,而且一般来说,会先删除掉子表,然后再删除父表的记录
    例:
    try
      if not  DataModule1.ADOConnection1.InTransaction then
          DataModule1.ADOConnection1.BeginTrans;
      with adoquery1 do
      begin
       close;
       sql.clear;
       sql.add('delete from B where spec = 100');
       execsql;
       close;
       sql.clear;
       sql.add('delete from A where spec = 100');
       execsql;
      end;
    DataModule1.ADOConnection1.CommitTrans;
        ShowMessage('删除成功');
      Except
        on e:exception do
        begin
          if DataModule1.ADOConnection1.InTransaction then
            DataModule1.ADOConnection1.RollbackTrans;
          MessageDlg('删除错误,操作被取消!'+#13+e.Message, mtError,[mbOk], 0);
          exit;
        end;
      end;
    //这样删除就可以保证你的表内容不会因为错误而出现不一致的情况了