<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to TZConnection.AutoCommit</title><link>https://sourceforge.net/p/zeoslib/wiki/TZConnection.AutoCommit/</link><description>Recent changes to TZConnection.AutoCommit</description><atom:link href="https://sourceforge.net/p/zeoslib/wiki/TZConnection.AutoCommit/feed" rel="self"/><language>en</language><lastBuildDate>Mon, 20 Aug 2018 10:20:41 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/zeoslib/wiki/TZConnection.AutoCommit/feed" rel="self" type="application/rss+xml"/><item><title>TZConnection.AutoCommit modified by marsupilami79</title><link>https://sourceforge.net/p/zeoslib/wiki/TZConnection.AutoCommit/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v4
+++ v5
@@ -17,5 +17,5 @@
 #Explicit transaction mode
 If you always want to be in control when to commit, then AutoCommit mode probably isn't for you. In That case set AutoCommit to false. Zeos will start a transaction for you immediately after you connect to the database. Calling Commit or Rollback will end that transaction and immediately start a new transaction. Zeos will never do a commit or rollback on its own.

-# Status Diagram
+# State Diagram
 ![](http://www.plantuml.com/plantuml/png/VP7DQiCm48JlVeh59xjKBs3JubBQMo-DRo47HLOI4Vq4QGLv_4Wn1kCLkKcQ-MONpH2GUun6L-c04kgV-qqheH16pstW0fMpDV00Nn7TjpD6uM9PaAo8fm9_Rf8Rz-YZ9E6p18RQVxaEighsRmTWx7EJ0rqYhPK2cxPVQV01MUu9DkUzuhAUmCqSvjNvWgMWDTqHVB4nBKz8rYTqUYp1nRdphMdVuTzfVUJYshHaxKJIdXAyoosl6aqezPK_l3Xta7QAHZy0)
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">marsupilami79</dc:creator><pubDate>Mon, 20 Aug 2018 10:20:41 -0000</pubDate><guid>https://sourceforge.netca1b87bf763b6feed270e154b115119fe29e4125</guid></item><item><title>TZConnection.AutoCommit modified by marsupilami79</title><link>https://sourceforge.net/p/zeoslib/wiki/TZConnection.AutoCommit/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v3
+++ v4
@@ -1,7 +1,8 @@
+# Summary
 AutoCommit enables or disables AutoCommit mode.

-In AutoCommit mode Zeos will do an implicit commit to the database after each write operation. Usually one would do that kind of thing, if you display some data to your user and any change should be committed to the database immediately. If you ocassionally need a transaction where you want to do multiple operations in one transaction and need to fully be in control of when to commit, you can start an explicit transaction by calling StartTransaction. In that case StartTransaction temporarily disables AutoCommit until you call Rollback or Commit. Either one of them will bring you back to the AutoCommit mode.
-If you always want to be in control when to commit, then AutoCommit mode probably isn't for you. In That case set AutoCommit to false. Zeos will start a transaction for you immediately after you connect to the database. Calling Commit or Rollback will end that transaction and immediately start a new transaction. Zeos will never do a commit or rollback on its own.
+# Autocommit mode
+In AutoCommit mode Zeos will do an implicit commit to the database after each write operation. For databases that do support auto commit on their own (Firebird, MS SQL, ...) Zeos will leave it to the database when to do a commit operation. Usually one would do that kind of thing, if you display some data to your user and any change should be committed to the database immediately. If you ocassionally need a transaction where you want to do multiple operations in one transaction and need to fully be in control of when to commit, you can start an explicit transaction by calling StartTransaction. In that case StartTransaction temporarily disables AutoCommit until you call Rollback or Commit. Either one of them will bring you back to the AutoCommit mode.

 Beware: There are cases where Zeos will not be able to identify a write operation and possibly doesn't do a commit. That can happen if you have a stored procedure that changes data and also returns records. In that case your sql probably looks similar to this:

@@ -13,4 +14,8 @@

 In some of these cases Zeos might think you are only doing a read and doesn't commit immediately afterwards.

+#Explicit transaction mode
+If you always want to be in control when to commit, then AutoCommit mode probably isn't for you. In That case set AutoCommit to false. Zeos will start a transaction for you immediately after you connect to the database. Calling Commit or Rollback will end that transaction and immediately start a new transaction. Zeos will never do a commit or rollback on its own.
+
+# Status Diagram
 ![](http://www.plantuml.com/plantuml/png/VP7DQiCm48JlVeh59xjKBs3JubBQMo-DRo47HLOI4Vq4QGLv_4Wn1kCLkKcQ-MONpH2GUun6L-c04kgV-qqheH16pstW0fMpDV00Nn7TjpD6uM9PaAo8fm9_Rf8Rz-YZ9E6p18RQVxaEighsRmTWx7EJ0rqYhPK2cxPVQV01MUu9DkUzuhAUmCqSvjNvWgMWDTqHVB4nBKz8rYTqUYp1nRdphMdVuTzfVUJYshHaxKJIdXAyoosl6aqezPK_l3Xta7QAHZy0)
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">marsupilami79</dc:creator><pubDate>Mon, 20 Aug 2018 10:19:05 -0000</pubDate><guid>https://sourceforge.net24f9a0d67da42f8a24e831ad9c08309232650eee</guid></item><item><title>TZConnection.AutoCommit modified by marsupilami79</title><link>https://sourceforge.net/p/zeoslib/wiki/TZConnection.AutoCommit/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v2
+++ v3
@@ -12,3 +12,5 @@
 `select * from someprocedure(:param1, :param2);`

 In some of these cases Zeos might think you are only doing a read and doesn't commit immediately afterwards.
+
+![](http://www.plantuml.com/plantuml/png/VP7DQiCm48JlVeh59xjKBs3JubBQMo-DRo47HLOI4Vq4QGLv_4Wn1kCLkKcQ-MONpH2GUun6L-c04kgV-qqheH16pstW0fMpDV00Nn7TjpD6uM9PaAo8fm9_Rf8Rz-YZ9E6p18RQVxaEighsRmTWx7EJ0rqYhPK2cxPVQV01MUu9DkUzuhAUmCqSvjNvWgMWDTqHVB4nBKz8rYTqUYp1nRdphMdVuTzfVUJYshHaxKJIdXAyoosl6aqezPK_l3Xta7QAHZy0)
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">marsupilami79</dc:creator><pubDate>Mon, 20 Aug 2018 10:10:49 -0000</pubDate><guid>https://sourceforge.net3b4c10c250fadb34c19a92b443a75e9e372a11d0</guid></item><item><title>Discussion for TZConnection.AutoCommit page</title><link>https://sourceforge.net/p/zeoslib/wiki/TZConnection.AutoCommit/?limit=25#a79f</link><description>&lt;div class="markdown_content"&gt;&lt;div class="codehilite"&gt;&lt;pre&gt; &lt;span class="nt"&gt;src&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;dbc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;ZDbcInterbase6&lt;/span&gt;&lt;span class="nc"&gt;.pas&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nt"&gt;12&lt;/span&gt; &lt;span class="o"&gt;++++++++++++&lt;/span&gt;
 &lt;span class="nt"&gt;1&lt;/span&gt; &lt;span class="nt"&gt;file&lt;/span&gt; &lt;span class="nt"&gt;changed&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;12&lt;/span&gt; &lt;span class="nt"&gt;insertions&lt;/span&gt;&lt;span class="o"&gt;(+)&lt;/span&gt;

&lt;span class="nt"&gt;diff&lt;/span&gt; &lt;span class="nt"&gt;--git&lt;/span&gt; &lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;src&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;dbc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;ZDbcInterbase6&lt;/span&gt;&lt;span class="nc"&gt;.pas&lt;/span&gt; &lt;span class="nt"&gt;b&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;src&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;dbc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;ZDbcInterbase6&lt;/span&gt;&lt;span class="nc"&gt;.pas&lt;/span&gt;
&lt;span class="nt"&gt;index&lt;/span&gt; &lt;span class="nt"&gt;991f03a&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;.ca3dde1&lt;/span&gt; &lt;span class="nt"&gt;100644&lt;/span&gt;
&lt;span class="nt"&gt;---&lt;/span&gt; &lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;src&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;dbc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;ZDbcInterbase6&lt;/span&gt;&lt;span class="nc"&gt;.pas&lt;/span&gt;
&lt;span class="o"&gt;+++&lt;/span&gt; &lt;span class="nt"&gt;b&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;src&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;dbc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;ZDbcInterbase6&lt;/span&gt;&lt;span class="nc"&gt;.pas&lt;/span&gt;
&lt;span class="o"&gt;@@&lt;/span&gt; &lt;span class="nt"&gt;-127&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;6&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nt"&gt;127&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;8&lt;/span&gt; &lt;span class="o"&gt;@@&lt;/span&gt; &lt;span class="nt"&gt;type&lt;/span&gt;

     &lt;span class="nt"&gt;procedure&lt;/span&gt; &lt;span class="nt"&gt;SetReadOnly&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;Value&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;Boolean&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; &lt;span class="nt"&gt;override&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="o"&gt;+&lt;/span&gt;    &lt;span class="nt"&gt;procedure&lt;/span&gt; &lt;span class="nt"&gt;SetAutoCommit&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;Value&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;Boolean&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; &lt;span class="nt"&gt;override&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;+&lt;/span&gt;
     &lt;span class="nt"&gt;procedure&lt;/span&gt; &lt;span class="nt"&gt;Commit&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="nt"&gt;override&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
     &lt;span class="nt"&gt;procedure&lt;/span&gt; &lt;span class="nt"&gt;Rollback&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="nt"&gt;override&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="o"&gt;@@&lt;/span&gt; &lt;span class="nt"&gt;-940&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;6&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nt"&gt;942&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;16&lt;/span&gt; &lt;span class="o"&gt;@@&lt;/span&gt; &lt;span class="nt"&gt;begin&lt;/span&gt;
   &lt;span class="nt"&gt;ReadOnly&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="nt"&gt;Value&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
 &lt;span class="nt"&gt;end&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nt"&gt;procedure&lt;/span&gt; &lt;span class="nt"&gt;TZInterbase6Connection&lt;/span&gt;&lt;span class="nc"&gt;.SetAutoCommit&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;Value&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;Boolean&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nt"&gt;begin&lt;/span&gt;
&lt;span class="o"&gt;+&lt;/span&gt;  &lt;span class="nt"&gt;if&lt;/span&gt; &lt;span class="nt"&gt;AutoCommit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nt"&gt;Value&lt;/span&gt; &lt;span class="nt"&gt;then&lt;/span&gt; &lt;span class="nt"&gt;Exit&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;+&lt;/span&gt;  &lt;span class="nt"&gt;if&lt;/span&gt; &lt;span class="nt"&gt;not&lt;/span&gt; &lt;span class="nt"&gt;Closed&lt;/span&gt; &lt;span class="nt"&gt;and&lt;/span&gt; &lt;span class="nt"&gt;Value&lt;/span&gt; &lt;span class="nt"&gt;then&lt;/span&gt;
&lt;span class="o"&gt;+&lt;/span&gt;    &lt;span class="nt"&gt;Commit&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;+&lt;/span&gt;  &lt;span class="nt"&gt;inherited&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;+&lt;/span&gt;  &lt;span class="nt"&gt;if&lt;/span&gt; &lt;span class="nt"&gt;not&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;AutoCommit&lt;/span&gt; &lt;span class="nt"&gt;or&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;GetTransactionIsolation&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nt"&gt;tiNone&lt;/span&gt;&lt;span class="o"&gt;))&lt;/span&gt; &lt;span class="nt"&gt;then&lt;/span&gt;
&lt;span class="o"&gt;+&lt;/span&gt;    &lt;span class="nt"&gt;StartTransaction&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nt"&gt;end&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;+&lt;/span&gt;
 &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;TZInterbase6CachedResolver&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

 &lt;span class="nt"&gt;constructor&lt;/span&gt; &lt;span class="nt"&gt;TZInterbase6CachedResolver&lt;/span&gt;&lt;span class="nc"&gt;.Create&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;Statement&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;IZStatement&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="nt"&gt;Metadata&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;IZResultSetMetadata&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">marsupilami79</dc:creator><pubDate>Mon, 18 Sep 2017 13:52:18 -0000</pubDate><guid>https://sourceforge.netc4e78373435b057239dedf0b306a0dcf1779ff74</guid></item><item><title>Discussion for TZConnection.AutoCommit page</title><link>https://sourceforge.net/p/zeoslib/wiki/TZConnection.AutoCommit/?limit=25#a59e</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Well, for FB it really does nothing... seem like forgotten override. As FB's internal autocommit is not used anyway&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;{EH: We do NOT handle the isc_tpb_autocommit of FB because we noticed a huge&lt;br/&gt;
 performance drop especially for Batch executions. Note Zeos handles one Batch&lt;br/&gt;
 Execution as one Update and loops until all batch array are send. FB with this&lt;br/&gt;
 param commits after each "execute block" which definitally kills the idea and&lt;br/&gt;
 the expected performance!}&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I guess the override should be added with explicit transaction start.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">marsupilami79</dc:creator><pubDate>Fri, 15 Sep 2017 08:43:47 -0000</pubDate><guid>https://sourceforge.net0ec574eb1485a08f6d29f9a13767ce983f00c47f</guid></item><item><title>Discussion for TZConnection.AutoCommit page</title><link>https://sourceforge.net/p/zeoslib/wiki/TZConnection.AutoCommit/?limit=25#cbbe</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Hello Fr0st,&lt;/p&gt;
&lt;p&gt;&lt;code&gt;TZAbstractConnection.StartTransaction&lt;/code&gt; is doing &lt;code&gt;AutoCommit := False;&lt;/code&gt;. Imho this calls &lt;code&gt;TZAbstractConnection.SetAutoCommit&lt;/code&gt; which in turn informs the driver about the change by calling &lt;code&gt;FConnection.SetAutoCommit&lt;/code&gt;. For some drivers this is the hint to start an explicit transaction (PostgreSQL). For others it is the hint to stop their emulation of AutoCommit (Oracle, Firebird). I dislike Firebird being in the latter list but that is the current implementation.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">marsupilami79</dc:creator><pubDate>Fri, 15 Sep 2017 08:20:01 -0000</pubDate><guid>https://sourceforge.neta913bcd821b3e4e354bd347d1114bc08b1d13b13</guid></item><item><title>Discussion for TZConnection.AutoCommit page</title><link>https://sourceforge.net/p/zeoslib/wiki/TZConnection.AutoCommit/?limit=25#f32f</link><description>&lt;div class="markdown_content"&gt;&lt;blockquote&gt;
&lt;p&gt;In that case StartTransaction temporarily disables AutoCommit until you call Rollback or Commit&lt;br/&gt;
Currently this acts quite weirdly... AutoCommit is disabled, but no transaction is started or finished.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;procedure TZAbstractConnection.StartTransaction;
begin
  CheckAutoCommitMode;

  if FExplicitTransactionCounter = 0 then
    AutoCommit := False;
  DoStartTransaction;
  Inc(FExplicitTransactionCounter);
end;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Maybe there should be &lt;code&gt;FConnection.StartTransaction&lt;/code&gt; line?&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">marsupilami79</dc:creator><pubDate>Fri, 15 Sep 2017 08:01:50 -0000</pubDate><guid>https://sourceforge.net8b4ae50b3ad05dccc96887c4af5f8de34041f21c</guid></item><item><title>TZConnection.AutoCommit modified by marsupilami79</title><link>https://sourceforge.net/p/zeoslib/wiki/TZConnection.AutoCommit/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -9,6 +9,6 @@

 or 

-`select * from some procedure(:param1, :param2);`
+`select * from someprocedure(:param1, :param2);`

 In some of these cases Zeos might think you are only doing a read and doesn't commit immediately afterwards.
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">marsupilami79</dc:creator><pubDate>Thu, 12 Nov 2015 16:07:19 -0000</pubDate><guid>https://sourceforge.net723830f74b09c86e20fa0fb7a45e90289ea52c29</guid></item><item><title>TZConnection.AutoCommit modified by marsupilami79</title><link>https://sourceforge.net/p/zeoslib/wiki/TZConnection.AutoCommit/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;AutoCommit enables or disables AutoCommit mode.&lt;/p&gt;
&lt;p&gt;In AutoCommit mode Zeos will do an implicit commit to the database after each write operation. Usually one would do that kind of thing, if you display some data to your user and any change should be committed to the database immediately. If you ocassionally need a transaction where you want to do multiple operations in one transaction and need to fully be in control of when to commit, you can start an explicit transaction by calling StartTransaction. In that case StartTransaction temporarily disables AutoCommit until you call Rollback or Commit. Either one of them will bring you back to the AutoCommit mode.&lt;br/&gt;
If you always want to be in control when to commit, then AutoCommit mode probably isn't for you. In That case set AutoCommit to false. Zeos will start a transaction for you immediately after you connect to the database. Calling Commit or Rollback will end that transaction and immediately start a new transaction. Zeos will never do a commit or rollback on its own.&lt;/p&gt;
&lt;p&gt;Beware: There are cases where Zeos will not be able to identify a write operation and possibly doesn't do a commit. That can happen if you have a stored procedure that changes data and also returns records. In that case your sql probably looks similar to this:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;select * from someprocedure;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;or &lt;/p&gt;
&lt;p&gt;&lt;code&gt;select * from some procedure(:param1, :param2);&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;In some of these cases Zeos might think you are only doing a read and doesn't commit immediately afterwards.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">marsupilami79</dc:creator><pubDate>Mon, 02 Nov 2015 10:31:13 -0000</pubDate><guid>https://sourceforge.net2e8e0de7e8a2d5565858a15be9ef1fcf92a710ba</guid></item></channel></rss>