PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PHP:PGSQL драйвер и AutoCommit?

Първо, в 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;")




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Преглед на генерираните колони за PostgreSQL

  2. деактивирайте БЕЛЕЖИТЕ в изхода на psql

  3. Как да сравним две полета в laravel и postgres

  4. Как работи UNION в PostgreSQL

  5. Psycopg2 вмъква речник на python в базата данни на postgres