<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Message</TITLE>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2800.1400" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>I was kind of hoping to avoid that, but it's not a 
biggie.&nbsp; Is there no way to fetch the record that has just been added 
within a transaction?</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</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=johnc@s4-technology.com href="mailto:johnc@s4-technology.com">JC</A> 
  </DIV>
  <DIV style="FONT: 10pt arial"><B>To:</B> <A title=delphi@ns3.123.co.nz 
  href="mailto:delphi@ns3.123.co.nz">'NZ Borland Developers Group - Delphi 
  List'</A> </DIV>
  <DIV style="FONT: 10pt arial"><B>Sent:</B> Friday, January 14, 2005 9:27 
  AM</DIV>
  <DIV style="FONT: 10pt arial"><B>Subject:</B> RE: [DUG] concurrent Interbase 
  Transactions</DIV>
  <DIV><BR></DIV>
  <DIV><SPAN class=015512220-13012005><FONT face=Arial color=#0000ff size=2>Hi 
  Phil</FONT></SPAN></DIV>
  <DIV><SPAN class=015512220-13012005><FONT face=Arial color=#0000ff 
  size=2></FONT></SPAN>&nbsp;</DIV>
  <DIV><SPAN class=015512220-13012005><FONT face=Arial color=#0000ff size=2>It 
  might be safer to have the generator giving you a new unique number (on 
  request, not in a trigger) and to use and insert that with the data in the 
  ExeQuery.</FONT></SPAN></DIV>
  <DIV><SPAN class=015512220-13012005><FONT face=Arial color=#0000ff size=2>As 
  you indicated, when implemented in a trigger then your fetch, to get this 
  value, may come too late and you end up with somebody 
  else's&nbsp;number.</FONT></SPAN></DIV>
  <DIV><SPAN class=015512220-13012005><FONT face=Arial color=#0000ff 
  size=2></FONT></SPAN>&nbsp;</DIV>
  <DIV><SPAN class=015512220-13012005><FONT face=Arial color=#0000ff 
  size=2>Cheers,</FONT></SPAN></DIV>
  <DIV><SPAN class=015512220-13012005><FONT face=Arial color=#0000ff 
  size=2>John</FONT></SPAN></DIV>
  <BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
    <DIV></DIV>
    <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left><FONT 
    face=Tahoma size=2>-----Original Message-----<BR><B>From:</B> 
    delphi-bounces@ns3.123.co.nz [mailto:delphi-bounces@ns3.123.co.nz] <B>On 
    Behalf Of </B>Phil Middlemiss<BR><B>Sent:</B> Friday, 14 January 2005 8:42 
    a.m.<BR><B>To:</B> NZ Borland Developers Group - Delphi 
    List<BR><B>Subject:</B> [DUG] concurrent Interbase 
    Transactions<BR><BR></FONT></DIV>
    <DIV><FONT face=Arial size=2>Hi everyone - hope you all had a good break. 
    Looks like summer has finally arrived (now that everyone's back at work)! 
    Anyway...</FONT></DIV>
    <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
    <DIV><FONT face=Arial size=2>I'm using Firebird (and transactions) for the 
    first time. I'm connecting to a remote database via the Firebird Server with 
    no problems, but I have a question about transactions:</FONT></DIV>
    <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
    <DIV><FONT face=Arial size=2>When I insert a new record, I use a trigger and 
    a generator to generate a new unique ID for the new record - I also query 
    the generator to see what the new value is that was returned by the trigger. 
    The code snippet&nbsp;is as follows:</FONT></DIV>
    <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
    <DIV><FONT face="Courier New" size=1>&nbsp;&nbsp;&nbsp; 
    orderTransaction.Active := True;<BR>&nbsp;&nbsp;&nbsp; <STRONG>with</STRONG> 
    orderQuery <STRONG>do</STRONG> <EM><FONT color=#008000>//insert the 
    record</FONT><BR></EM>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    <STRONG>begin</STRONG><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    ExecQuery;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <STRONG>with</STRONG> 
    IBCurrentGeneratorValueQuery <STRONG>do</STRONG> <FONT color=#008000><EM>// 
    this query fetches the current value of the 
    generator</EM></FONT><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    <STRONG>try</STRONG><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    Transaction := orderTransaction;&nbsp; <FONT color=#008000><EM>// share the 
    same transaction as the 
    order</EM></FONT><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    Open;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    result:=FieldByName(<FONT color=#000080>'newID'</FONT>).asInteger; <EM><FONT 
    color=#008000>//&nbsp;get the generator 
    value</FONT></EM><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    <STRONG>except</STRONG><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    result:=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    <STRONG>end</STRONG>;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    orderTransaction.Commit;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    <STRONG>end</STRONG>;<BR></FONT></DIV>
    <DIV><FONT face=Arial size=2>The question is, if multiple clients access the 
    database server at the same time, will <FONT face="Courier New" 
    size=1>IBCurrentGeneratorValueQuery </FONT>still return the correct value, 
    or if another concurrent transaction on another thread increments the 
    generator, will this query return the wrong value?</FONT></DIV>
    <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
    <DIV><FONT face=Arial size=2>When I was using MySQL (with PHP) I could use 
    mysql_insert_id() to query the new key value. I&nbsp;guess&nbsp;that if I 
    could get hold of the newly inserted row I could just get the field value, 
    but the same concurrency issue applies and I'm not sure how to get the 
    record I just inserted.</FONT></DIV>
    <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
    <DIV><FONT face=Arial size=2>Cheers,</FONT></DIV>
    <DIV><FONT face=Arial size=2>Phil.</DIV></FONT><BR>
    <P><FONT size=2>---<BR>Incoming mail is certified Virus Free.<BR>Checked by 
    AVG anti-virus system (http://www.grisoft.com).<BR>Version: 6.0.832 / Virus 
    Database: 566 - Release Date: 10/01/2005<BR></FONT></P>
    <P><FONT face=Arial size=2></FONT></P></BLOCKQUOTE>
  <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></BODY></HTML>