紧急请教更新数据库字段的SQL语句,我有两个相同结构的数据表,保存的时候需要两张表中的数据同步,应该怎么写,多写
表结构如下
表一
stuid1   (学号)
card1    (考勤号码)
name1     (姓名)
表二
stuid2   (学号)
card2   (考勤号码)
name2     (姓名)对表一进行新增、修改保存的时候,使表二中的数据与表一中始终保持一致,更新的代码应该怎么写?正确给出后马上给分。数据库是access,用ADO连的数据库,请用代码实现,不通过数据库设计实现,谢谢!在线等待

解决方案 »

  1.   

    UPDATE 表1 INNER JOIN 表2 ON (表1.ID = 表2.ID) AND (表1.stuid1 = 表2.stuid2) SET 表2.card2 = [表1].[card1], 表2.name2 = [表1].[name1];
      

  2.   

    delete from 表2
    insert into 表2 select * from 表1
      

  3.   

    不知道ACCESS中有没有外关键字的概念.
    constraint foreign key reference ......
      

  4.   

    这是我的代码, 不知道出错在哪
    procedure TForm1.AQBeforePost(DataSet: TDataSet);
    var
      query: tadoquery;
      id: integer;
     strOldID,strOldName, strNewID, strNewName, stroldcard, strnewcard, strsql: string;
    begin
      if aq.State = dsinsert then
      begin  
      try
          id := id_gen(adodb.ConnectionString, 'tmp', 'per_id');
          aqtmp.Insert;
          aqtmp.FieldByName('stuid').AsString := dbediteh2.Text;
          aqtmp.FieldByName('per_name').AsString := dbediteh1.Text;
          aqtmp.FieldByName('per_card').AsString := dbediteh3.Text;
          aqtmp.FieldByName('per_id').AsString := inttostr(id);
          aqtmp.FieldByName('per_yes').AsString := 'N';
          aqtmp.Post;
        except
        end;
      end;
      if aq.State=dsedit then
      begin
      stroldID:=aq.fieldbyname('stuid').AsString;
      strnewcard:=dbediteh3.Text;
      strnewname:=dbediteh1.Text;
      strnewid:=dbediteh2.Text;
         with aq3 do
         begin
         close;
         sql.Clear;
         sql.Text:='update tmp set stuid='+strnewid+',per_card='+strnewcard+',per_name='+strnewname+'where stuid='+stroldid+'''';
          execsql;
         end;
      end;
    end;
      

  5.   

    更新的sql语句错了
    应该是
    sql.Text:='update tmp set stuid='''+strnewid+''''+',per_card='''+strnewcard+''''+',per_name='''+strnewname+''''+'where stuid='+stroldid+'''';