<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>myOffice Email Message</TITLE>
<META http-equiv=content-type content="text/html; charset=iso-8859-1">
<META content=2002-11-01 name=date>
<STYLE type=text/css></STYLE>
<META content="MSHTML 6.00.2800.1400" name=GENERATOR></HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>Very good. Thanks for that Gary.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Cheers,</FONT></DIV>
<DIV><FONT face=Arial size=2>Phil.</FONT></DIV>
<BLOCKQUOTE
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
<DIV
style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B>
<A title=gary@123.co.nz href="mailto:gary@123.co.nz">Gary T. Benner</A> </DIV>
<DIV style="FONT: 10pt arial"><B>To:</B> <A title=delphi@delphi.org.nz
href="mailto:delphi@delphi.org.nz">delphi@delphi.org.nz</A> </DIV>
<DIV style="FONT: 10pt arial"><B>Sent:</B> Friday, January 14, 2005 12:22
PM</DIV>
<DIV style="FONT: 10pt arial"><B>Subject:</B> RE: Re: [DUG] concurrent
Interbase Transactions</DIV>
<DIV><BR></DIV><SPAN style="COLOR: #ff0000"><B><SPAN
style="FONT-FAMILY: MS Sans Serif">[Reply]</SPAN></B></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN style="COLOR: #000000">HI
Phil, et al ..</SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN style="COLOR: #000000">The
main point is that the IB/Firebird generator mechanism does not function
inside a transaction.</SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN style="COLOR: #000000">The
best way to hanlde it is to give yourself a bet both ways.</SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN style="COLOR: #000000">Use a
trigger like this, so that if you specify a pk value, it is supplied,
otherwise one is created.</SPAN></SPAN>
<P><SPAN style="COLOR: #000080"><SPAN
style="FONT-FAMILY: Courier,monospace"><SPAN style="FONT-SIZE: 9pt">create
trigger trMYTABLE for MYTABLE </SPAN></SPAN></SPAN>
<P><SPAN style="COLOR: #000080"><SPAN
style="FONT-FAMILY: Courier,monospace"><SPAN style="FONT-SIZE: 9pt">active
before insert position 0</SPAN></SPAN></SPAN>
<P><SPAN style="COLOR: #000080"><SPAN
style="FONT-FAMILY: Courier,monospace"><SPAN style="FONT-SIZE: 9pt">as
begin</SPAN></SPAN></SPAN>
<P><SPAN style="COLOR: #000080"><SPAN
style="FONT-FAMILY: Courier,monospace"><SPAN style="FONT-SIZE: 9pt">if (new.id
is null) then new.id=gen_id(genANY,1);</SPAN></SPAN></SPAN>
<P><SPAN style="COLOR: #000080"><SPAN
style="FONT-FAMILY: Courier,monospace"><SPAN
style="FONT-SIZE: 9pt">end;</SPAN></SPAN></SPAN>
<P><SPAN style="COLOR: #000000"><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt">and in code I have a library routine(s) to get the
generator value.</SPAN></SPAN></SPAN>
<P><SPAN style="COLOR: #000080"><SPAN
style="FONT-FAMILY: Courier,monospace"><SPAN style="FONT-SIZE: 9pt">function
GetNewID : integer;</SPAN></SPAN></SPAN>
<P><SPAN style="COLOR: #000080"><SPAN
style="FONT-FAMILY: Courier,monospace"><SPAN
style="FONT-SIZE: 9pt">begin</SPAN></SPAN></SPAN>
<P><SPAN style="COLOR: #000080"><SPAN
style="FONT-FAMILY: Courier,monospace"><SPAN style="FONT-SIZE: 9pt">with
TIBQuery.create(nil) do try</SPAN></SPAN></SPAN>
<P><SPAN style="COLOR: #000080"><SPAN
style="FONT-FAMILY: Courier,monospace"><SPAN style="FONT-SIZE: 9pt">.. //
connect to database etc</SPAN></SPAN></SPAN>
<P><SPAN style="COLOR: #000080"><SPAN
style="FONT-FAMILY: Courier,monospace"><SPAN
style="FONT-SIZE: 9pt">sql.add('select gen_id(genANY,1) newid from
rdb$database');</SPAN></SPAN></SPAN>
<P><SPAN style="COLOR: #000080"><SPAN
style="FONT-FAMILY: Courier,monospace"><SPAN
style="FONT-SIZE: 9pt">open;</SPAN></SPAN></SPAN>
<P><SPAN style="COLOR: #000080"><SPAN
style="FONT-FAMILY: Courier,monospace"><SPAN
style="FONT-SIZE: 9pt">result:=fieldbyname('newid').asInteger;</SPAN></SPAN></SPAN>
<P><SPAN style="COLOR: #000080"><SPAN
style="FONT-FAMILY: Courier,monospace"><SPAN
style="FONT-SIZE: 9pt">finally</SPAN></SPAN></SPAN>
<P><SPAN style="COLOR: #000080"><SPAN
style="FONT-FAMILY: Courier,monospace"><SPAN style="FONT-SIZE: 9pt">free;
</SPAN></SPAN></SPAN>
<P><SPAN style="COLOR: #000080"><SPAN
style="FONT-FAMILY: Courier,monospace"><SPAN
style="FONT-SIZE: 9pt">end;</SPAN></SPAN></SPAN>
<P><SPAN style="COLOR: #000080"><SPAN
style="FONT-FAMILY: Courier,monospace"><SPAN
style="FONT-SIZE: 9pt">end;</SPAN></SPAN></SPAN>
<P><SPAN style="COLOR: #000000"><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt">For those interested, the above query references the
rdb$database table, a system table with ever only one record. This is done to
satisfy the SQL92 query syntax when accessing the gen_id function - a built in
IB/Firebird (only) function.</SPAN></SPAN></SPAN>
<P><SPAN style="COLOR: #000000"><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt">HTH</SPAN></SPAN></SPAN>
<P><SPAN style="COLOR: #000000"><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt">Gary</SPAN></SPAN></SPAN>
<P><SPAN style="COLOR: #000000"><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt">A</SPAN></SPAN></SPAN><SPAN
style="FONT-FAMILY: MS Sans Serif"><SPAN style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #ff0000"><B>t 11:26 on 14/01/2005 you wrote
</B></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>To :
delphi@ns3.123.co.nz</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>CC :
</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>From: Phil
Middlemiss, phil@tumonz.co.nz</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>Content Type:
text/plain</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>Attached:
</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>Thanks to all who
replied. In the end I did the inevitable (Johns</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>suggestion) and now
fetch a new ID first and include it in the INSERT</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>operation rather than
have the trigger.</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>Phil.</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>----- Original
Message ----- </SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>From: "Steve Aish"
<Steve.Aish@twoa.ac.nz></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>To:
<delphi@ns3.123.co.nz></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>Sent: Friday, January
14, 2005 10:55 AM</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>Subject: Re: [DUG]
concurrent Interbase Transactions</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> The way I handle
this is to insert the record and then immediately do a</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> search for the
record I just inserted. This will give you the value</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> just
inserted.</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>>
e.g.</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> insert into
debtor_trans (accountnumber, amount, transdate, ...)</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> trigger fires
and fills in the unique seq_no</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> select
max(seq_no) from debtor_trans where accountnumber =</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> accountnumber
and amount = amount and transdate ...</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> this will return
the seq_no from the record you just inserted.</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> I don't know if
this is the best or most efficient way of doing this</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> but it has
always worked for me.</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>>
Steve</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> >>>
phil@tumonz.co.nz 14/01/2005 10:16:37 a.m. >>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> MessageI was
kind of hoping to avoid that, but it's not a biggie. Is</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> there no way to
fetch the record that has just been added within a</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>>
transaction?</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>>
Cheers,</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>>
Phil.</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> ----- Original
Message ----- </SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> From:
JC</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> To: 'NZ Borland
Developers Group - Delphi List'</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> Sent: Friday,
January 14, 2005 9:27 AM</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> Subject: RE:
[DUG] concurrent Interbase Transactions</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> Hi
Phil</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> It might be
safer to have the generator giving you a new unique</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> number (on
request, not in a trigger) and to use and insert that
with</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> the data in the
ExeQuery.</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> As you
indicated, when implemented in a trigger then your fetch,
to</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> get this value,
may come too late and you end up with somebody else's</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>>
number.</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>>
Cheers,</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>>
John</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> -----Original
Message-----</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> From:
delphi-bounces@ns3.123.co.nz</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>>
[mailto:delphi-bounces@ns3.123.co.nz] On Behalf Of Phil
Middlemiss</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> Sent: Friday, 14
January 2005 8:42 a.m.</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> To: NZ Borland
Developers Group - Delphi List</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> Subject: [DUG]
concurrent Interbase Transactions</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> Hi everyone -
hope you all had a good break. Looks like summer has</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> finally arrived
(now that everyone's back at work)! Anyway...</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> I'm using
Firebird (and transactions) for the first time. I'm</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> connecting to a
remote database via the Firebird Server with no</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> problems, but I
have a question about transactions:</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> When I insert a
new record, I use a trigger and a generator to</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> generate a new
unique ID for the new record - I also query the generator</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> to see what the
new value is that was returned by the trigger. The code</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> snippet is as
follows:</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>>
orderTransaction.Active := True;</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> with orderQuery
do //insert the record</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>>
begin</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>>
ExecQuery;</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> with
IBCurrentGeneratorValueQuery do // this query fetches</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> the current
value of the generator</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>>
try</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> Transaction :=
orderTransaction; // share the same</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> transaction as
the order</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>>
Open;</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>>
result:=FieldByName('newID').asInteger; // get the</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> generator
value</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>>
except</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>>
result:=-1;</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>>
end;</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>>
orderTransaction.Commit;</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>>
end;</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> The question is,
if multiple clients access the database server at</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> the same time,
will IBCurrentGeneratorValueQuery still return the</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> correct value,
or if another concurrent transaction on another thread</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> increments the
generator, will this query return the wrong value?</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> When I was using
MySQL (with PHP) I could use mysql_insert_id() to</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> query the new
key value. I guess that if I could get hold of the newly</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> inserted row I
could just get the field value, but the same concurrency</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> issue applies
and I'm not sure how to get the record I just inserted.</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>>
Cheers,</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>>
Phil.</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>>
---</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> Incoming mail is
certified Virus Free.</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> Checked by AVG
anti-virus system (http://www.grisoft.com).</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> Version: 6.0.832
/ Virus Database: 566 - Release Date: 10/01/2005</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>>
--------------------------------------------------------------------------</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>----</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>>
_______________________________________________</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> Delphi mailing
list</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>>
Delphi@ns3.123.co.nz</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>>
http://ns3.123.co.nz/mailman/listinfo/delphi</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>>
_______________________________________________</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>> Delphi mailing
list</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>>
Delphi@ns3.123.co.nz</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>>
http://ns3.123.co.nz/mailman/listinfo/delphi</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">></SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>_______________________________________________</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">>Delphi mailing
list</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>Delphi@ns3.123.co.nz</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN
style="COLOR: #008000">>http://ns3.123.co.nz/mailman/listinfo/delphi</SPAN></SPAN></SPAN>
<P><SPAN style="FONT-FAMILY: MS Sans Serif"><SPAN
style="FONT-SIZE: 10pt"><SPAN style="COLOR: #008000">></SPAN></SPAN></SPAN>
<P><FONT face=arial color=navy size=1></P>
<DIV style="WIDTH: 260px; HEIGHT: 50px">
<MARQUEE id=marquee1 style="WIDTH: 260px; HEIGHT: 200px" trueSpeed
scrollAmount=5 scrollDelay=20 direction=right behavior=slide loop=1
border="2">
<HR>
<TABLE>
<TBODY>
<TR>
<TD><FONT face=helvetica,verdana,arial color=black size=4>Gary Benner
</FONT></TD></TR>
<TR>
<TD><FONT face="arial, arial, helvetica, sans-serif" color=black
size=2>e-Engineer, Lecturer, and Software Developer</FONT></TD></TR><BR>
<TR>
<TD><FONT face="arial, arial, helvetica, sans-serif" color=#000099
size=2><B><A style="COLOR: blue; TEXT-DECORATION: none"
href="http://www.123.co.nz">123 Internet Limited</A></B></FONT></TD></TR>
<TR>
<TD><FONT face="arial, arial, helvetica, sans-serif" color=#000099
size=2><B><A style="COLOR: #993333; TEXT-DECORATION: none"
href="http://www.waiariki.ac.nz">Waiariki Institute of
Technology</A></B></FONT></TD></TR>
<TR>
<TD><FONT face="arial, arial, helvetica, sans-serif" color=#cece00
size=2><B><A style="COLOR: #cece00; TEXT-DECORATION: none"
href="http://www.sunshinebags.co.nz">Sunshine Garden Bag
Co.</A></B></FONT></TD></TR>
<TR>
<TD><FONT face="arial, arial, helvetica, sans-serif" color=red
size=2><B><A style="COLOR: red; TEXT-DECORATION: none"
href="http://www.sommnet.com">Sommnet.com Limited</A></B></FONT></TD></TR>
<TR>
<TD><FONT face=! size=1 ?helvetica,verdana,arial?>Mob: 021 966
992</FONT></TD></TR>
<TR>
<TD><FONT face=helvetica,verdana,arial size=1>Email: <A
href="mailto:gary@123.co.nz">gary@123.co.nz</A>
</FONT></TD></TR></TBODY></TABLE></MARQUEE></DIV><BR><BR>Ref#: 41006<BR><BR>
<P>
<HR>
<P></P>_______________________________________________<BR>Delphi mailing
list<BR>Delphi@ns3.123.co.nz<BR>http://ns3.123.co.nz/mailman/listinfo/delphi<BR></BLOCKQUOTE></FONT></BODY></HTML>