From: | Denkewitz Lars <lars(dot)denkewitz(at)dogro(dot)de> |
---|---|
To: | "'pgsql-de-allgemein(at)postgresql(dot)org'" <pgsql-de-allgemein(at)postgresql(dot)org> |
Subject: | Autocommit |
Date: | 2005-07-18 13:59:41 |
Message-ID: | 527CFCD935ABD711A86E0003473A917E077BCF@SpiritII |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-de-allgemein |
Hallo,
ich versuche derzeit die Logik des Autocommits bzgl der libpq-Schnittstelle
zu begreifen. Laut Handbuch ist AUTOCOMMIT standardmäßig auf OFF, wenn man
es einmal eingeschaltet hat, kann man es aber auch nicht mehr abschalten, da
diese Möglichkeit ab Version 7.4 entfernt wurde. Autocommit=false
(Standardeinstellung) bedeutet laut Handbuch:
Wenn auf falsch gesetzt, dann schließt PostgreSQL Transaktionen nur dann ab,
wenn ein COMMIT ausdrücklich ausgeführt wird.
Soweit so gut, ich habe nun folgenden (vereinfachten) Quelltext:
conn =
PQsetdbLogin("localhost","5432","","","mbund_backup","postgres","postgres");
PQexec(conn,"insert into testdb values(5090,444,333)");
PQexec(conn,"rollback");
PQfinish(conn);
Der Satz ist nun leider drin, der Server (Version 8.0.3) meldet: "WARNING:
there is no transaction in progress".
Im Gegensatz zur libpqg-Schnittstelle wird o.g. Verhalten jedoch genau
eingehalten, wenn man die ECPG-Schnittslle verwendet.
Dies widerspricht meiner Meinung nach der obigen Beschreibung, kann jemand
zur Erklärung des geschilderten Sachverhaltes beitragen?
MfG
Lars Denkewitz
From | Date | Subject | |
---|---|---|---|
Next Message | Michael Meskes | 2005-07-18 18:26:06 | Re: LinuxWorld Frankfurt |
Previous Message | Kretschmer Andreas | 2005-07-14 16:47:14 | Re: Se |