Първо, в PostgreSQL няма режим AutoCommit и функциите pg_* на PHP API не се опитват да емулират такъв.
doc на pg_query казва
Така че гарантира, че pg_query("UPDATE1 ..; UPDATE2...")
се изпълнява в една транзакция и има ефект „всичко или нищо“ върху данните.
Последователността
pg_query("BEGIN");
pg_query("UPDATE1...");
pg_query("UPDATE2..");
pg_query("COMMIT");
е еквивалентен на pg_query("UPDATE1 ..; UPDATE2...")
по отношение на целостта на данните (полузавършено състояние не може да се случи).
Що се отнася до забележката „освен ако няма изрични BEGIN/COMMIT...“, тя е уместна само ако те не са в началото и края на цялата верига от SQL изрази. Това е pg_query("BEGIN; update1; update2; COMMIT;");
е еквивалентен на pg_query("update1; update2;")
но (очевидно) не е еквивалентно на pg_query("update1; COMMIT; update2;")