Za prvé, v PostgreSQL neexistuje režim AutoCommit a funkce pg_* PHP API se ho nesnaží emulovat.
doc uživatele pg_query říká
Takže zaručuje, že pg_query("UPDATE1 ..; UPDATE2...")
provede se v jedné transakci a má na data vliv vše nebo nic.
Sekvence
pg_query("BEGIN");
pg_query("UPDATE1...");
pg_query("UPDATE2..");
pg_query("COMMIT");
je ekvivalentní pg_query("UPDATE1 ..; UPDATE2...")
s ohledem na integritu dat (nemůže nastat stav napůl dokončen).
Pokud jde o poznámku „pokud nejsou explicitně uvedeny BEGIN/COMMIT...“, je relevantní pouze v případě, že tyto nejsou na začátku a na konci celého řetězce příkazů SQL. Tedy pg_query("BEGIN; update1; update2; COMMIT;");
je ekvivalentní pg_query("update1; update2;")
ale (samozřejmě) není ekvivalentní pg_query("update1; COMMIT; update2;")