现在举例说明吧!aID   a1  a2  a3
2001  22  33  sd
2001  23  21  a12
2001  24  44  2dd当插入记录
aID   a1  a2  a3
2002  22  33  sd
2002  23  21  a12
2002  24  44  2dd
时,就禁止插入aID=2002对应的记录比aID=2001对应的记录多一条或少一条的话,可以不禁止插入就是当插入数据
aID   a1  a2  a3
2002  22  33  sd
2002  23  21  a12

aID   a1  a2  a3
2002  22  33  sd
2002  23  21  a12
2002  24  44  2dd
2002  54  44  ss2
可以插入谢谢!!!!!

解决方案 »

  1.   

    先把A的记录数读取出来,然后操作B 
    用CLIENTDATA控件暂存B的数据,POST后看RECODECOUNT是否符合要求,是的话就ApplyUpdates,否的话就提示。
      

  2.   

    以前好象有人提出过这个问题,或许在sql server 板块中,
    你可以直接判断当前准备插入的数据组合,是否在表中存在了
      

  3.   

    用一个事务来处理比较好:这是我大致的思路,不知道对不对,由于时间忙,所以我没有试,我不知道你要插入的记录以什么方式插入,如果不对,请大家指正,并希望高手给出一段好的代码......
    var
      rec,rectemp:integer;
    begin
      form1.ADOConnection1.BeginTrans;
      with form1.ADOQuery1 do
        begin
          close;
          sql.Clear;
          sql.Add('select aid from table_name where aid=:aidvale');
          parameters.ParamByName('aidvale'):=你要插入的记录aid;
          open;
        end;
      rec:=form1.ADOQuery1.RecordCount;
      while 要插入的aid=aidvale的记录没有插入完 do
        begin
          with adoquery1 do
            begin
              close;
              sql.Clear;
              sql.Add('insert into table_name values(:aidvale,:a1,:a2:a3)');
              ExecSQL;
            end;
          inc(rectemp);
        end;
      if rec=rectemp then
        form1.ADOConnection1.RollbackTrans;
      else
        form1.ADOConnection1.CommitTrans;
    end;