Erstens gibt es in PostgreSQL keinen AutoCommit-Modus und die pg_*-Funktionen der PHP-API versuchen nicht, einen zu emulieren.
doc von pg_query sagt
Es garantiert also, dass pg_query("UPDATE1 ..; UPDATE2...")
wird in einer Transaktion ausgeführt und hat einen Alles-oder-nichts-Effekt auf die Daten.
Die Sequenz
pg_query("BEGIN");
pg_query("UPDATE1...");
pg_query("UPDATE2..");
pg_query("COMMIT");
entspricht pg_query("UPDATE1 ..; UPDATE2...")
hinsichtlich der Datenintegrität (Halbfertigzustand kann nicht vorkommen).
Der Hinweis „es sei denn, es gibt explizit BEGIN/COMMIT...“ ist nur relevant, wenn diese nicht am Anfang und am Ende der gesamten Kette von SQL-Anweisungen stehen. Das heißt, pg_query("BEGIN; update1; update2; COMMIT;");
entspricht pg_query("update1; update2;")
aber (offensichtlich) nicht äquivalent zu pg_query("update1; COMMIT; update2;")