建立触发器啊!
或者这样吧
with Query do
begin
  Close;
  Sql.Clear;
  Sql.Text := 'BEGIN TRANSACTION            '+
              ' DECLARE @MyCode VarChar(10),'+
              '         @MyName varChar(20) '+
              ' SELECT @MyCode = :MyCode,   '+
              '        @MyName = :MyName    '+
              ' UPDATE TableA SET MyName = @MyName '+
              '  WHERE MyCode = @MyCode     '+
              ' UPDATE TableA SET MyName = @MyName '+
              '  WHERE MyCode = @MyCode     '+
              'IF @@error=0 COMMIT TRANSACTION  '+
              'ELSE ROLLBACK TRANSACTION    ';
     ParamByName('MyCode').AsString := '123123';
     ParamByName('MyName').AsString := '人民币';
     ExecSQL;
end;

解决方案 »

  1.   

    update B set MoneyType = a.MoneyType , Info = a.Info
    from B b
    join A a on a.Id = b.Id
      

  2.   

    如果你使用的是SQL Server,那么你就可以达到这个目的,如果用的是DB2等数据库,那么这个功能是没有的。
    update set B.币别=A.币别  A from A,B where B.号码=A.号码
    但是A表中号码值应该是唯一的。
      

  3.   

    adoconnection1
    adodataset1,adodataset2分别对应A,B表
    ///设置a,b表为master/detail关系,B为主表,如下
    //可以在设计阶段进行
    adodataset1.commandtext:='select * from a';
    adodatasource1.dataset:=adodataset1;
    adodataset2.commandtext:='select * from b where 号码=:号码';
    adodataset2.datasource:=adodatasource1;
    //编码
    procedure button1click(sender:tobject)
    var i:integer;
    begin
    while not adodataset2.eof do
    begin
      if adodataset1.recordcount>0 then
         ///若从表中有关联记录,则修改记录一中的信息
         begin
           if not (adodataset2.state in [edit,insert]) then
           adodataset2.edit;
           for i:=0 adodataset2.fields.count do
             begin
               adodataset2.fields[i].value:=adodataset1.fields[i].value;
             end;
           adodataset2.post;
           
         end;     
    end;
    showmessage('更新完成');
    end;