sql >> Database >  >> RDS >> PostgreSQL

PHP:PGSQL-stuurprogramma en AutoCommit?

Ten eerste is er geen AutoCommit-modus in PostgreSQL en de pg_*-functies van de PHP API proberen er geen te emuleren.

pg_query's doc zegt

Het garandeert dus dat pg_query("UPDATE1 ..; UPDATE2...") wordt in één transactie uitgevoerd en heeft een alles-of-niets-effect op de gegevens.

De reeks

pg_query("BEGIN");
pg_query("UPDATE1...");
pg_query("UPDATE2..");
pg_query("COMMIT");

is gelijk aan pg_query("UPDATE1 ..; UPDATE2...") met betrekking tot gegevensintegriteit (half-afgewerkte toestand kan niet gebeuren).

Wat betreft de opmerking "tenzij er expliciete BEGIN/COMMIT..." is, is deze alleen relevant als deze niet aan het begin en einde van de hele keten van SQL-instructies staan. Dat wil zeggen, pg_query("BEGIN; update1; update2; COMMIT;"); is gelijk aan pg_query("update1; update2;") maar (uiteraard) niet gelijk aan pg_query("update1; COMMIT; update2;")




  1. MySQL Visual Studio Kan geen ontwerpvenster maken voor het geselecteerde object

  2. php,postgresql,mysql

  3. Hoe sql-mode=NO_ENGINE_SUBSTITUTION permanent te maken in MySQL my.cnf

  4. Oracle.ManagedDataAccess.EntityFramework - ORA-01918:gebruiker 'dbo' bestaat niet