Đầu tiên, không có chế độ AutoCommit trong PostgreSQL và các hàm pg_ * của PHP API không cố gắng mô phỏng một.
doc của pg_query nói
Vì vậy, nó đảm bảo rằng pg_query("UPDATE1 ..; UPDATE2...")
thực hiện trong một giao dịch và có ảnh hưởng hoàn toàn hoặc không ảnh hưởng đến dữ liệu.
Trình tự
pg_query("BEGIN");
pg_query("UPDATE1...");
pg_query("UPDATE2..");
pg_query("COMMIT");
tương đương với pg_query("UPDATE1 ..; UPDATE2...")
liên quan đến tính toàn vẹn của dữ liệu (không thể xảy ra trạng thái nửa hoàn thiện).
Đối với ghi chú "trừ khi có BEGIN / COMMIT ..." rõ ràng, nó chỉ có liên quan nếu chúng không nằm ở đầu và cuối của toàn bộ chuỗi câu lệnh SQL. Nghĩa là, pg_query("BEGIN; update1; update2; COMMIT;");
tương đương với pg_query("update1; update2;")
nhưng (rõ ràng) không tương đương với pg_query("update1; COMMIT; update2;")