Subject RE: [firebird-support] Re: Cross database update
Author Leyne, Sean

 

Again, this question should be directed to the appropriate IBExpert support forum/list/group.

 

 

Sean

 

From: firebird-support@yahoogroups.com [mailto:firebird-support@yahoogroups.com]
Sent: November-18-14 12:00 PM
To: firebird-support@yahoogroups.com
Subject: [firebird-support] Re: Cross database update

 



HI!

I have had feedback from IBExpert in respect of my block statement. The correct syntax is easy and looks like the following below.

I can see in my trigger log that the update uses just one transaction but unfortunately the triggers fire although the preceding rdb$set for each record (as they normally should).

When I put everything into a block statement (as initially put in this topic) the update has no effect, because the update runs isolated inside of the block.

Maybe someone has a clue?
Thank you
Christian


--This time the Analysis DB is the source
   FBSRC  = ibec_CreateConnection(__ctFirebird,'DBName="PATH to DB1";
   ClientLib=C:\WINDOWS\system32\fbclient.dll;
   user=XX; password=XX; names=ISO8859_1; sqldialect=3');

-- and writes to the Test DB/Prod. DB
   FBDEST  = ibec_CreateConnection(__ctFirebird,'DBName="PATH to DB2";
   ClientLib=C:\WINDOWS\system32\fbclient.dll;
   user=XX; password=XX; names=ISO8859_1; sqldialect=3');

   ibec_UseConnection(FBSRC);
   ibec_UseConnection(FBDEST);

use FBSRC;
for select
        (lrc.paid_claims_eur + lrc.paid_costs_eur - lrc.paid_recoveries_eur + --lrc.paid_fees_eur +
        lrc.os_claims_eur + lrc.os_costs_eur - lrc.os_recoveries_eur) as TCACCY,
        (lrc.paid_claims_usd + lrc.paid_costs_usd - lrc.paid_recoveries_usd + --lrc.paid_fees_usd +
        lrc.os_claims_usd + lrc.os_costs_usd - lrc.os_recoveries_usd) as TCACCY2,
        current_date, lrc.file_id
        from loss_record_claims lrc
        where lrc.file_id in (120966,120214)
into
        :TCACCY, :TCACCY2, :DATEFILTER, :FILE_ID
do
  begin

use FBDEST;
        try
        execute statement 'select rdb$set_context(''USER_TRANSACTION'', ''bulkload'', ''1'') from rdb$database';
        update files f
            set f.ccy_total_claim_amount_net = :TCACCY,
                f.ccy2_total_claim_amount_net = :TCACCY2,
                f.date_filter = :DATEFILTER
        where f.file_id = :FILE_ID;
        except ibec_ShowMessage(ibec_err_Message());
        end
    end
commit;
   ibec_CloseConnection(FBSRC);
   ibec_CloseConnection(FBDEST);
end