sql >> Databáze >  >> RDS >> PostgreSQL

PHP:Ovladač PGSQL a AutoCommit?

Za prvé, v PostgreSQL neexistuje režim AutoCommit a funkce pg_* PHP API se ho nesnaží emulovat.

doc uživatele pg_query říká

Takže zaručuje, že pg_query("UPDATE1 ..; UPDATE2...") provede se v jedné transakci a má na data vliv vše nebo nic.

Sekvence

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

je ekvivalentní pg_query("UPDATE1 ..; UPDATE2...") s ohledem na integritu dat (nemůže nastat stav napůl dokončen).

Pokud jde o poznámku „pokud nejsou explicitně uvedeny BEGIN/COMMIT...“, je relevantní pouze v případě, že tyto nejsou na začátku a na konci celého řetězce příkazů SQL. Tedy pg_query("BEGIN; update1; update2; COMMIT;"); je ekvivalentní pg_query("update1; update2;") ale (samozřejmě) není ekvivalentní pg_query("update1; COMMIT; update2;")




  1. PostgreSQL:Existuje funkce, která převede base-10 int na base-36 řetězec?

  2. MySQL:aktualizujte pole, pouze pokud je splněna podmínka

  3. Jak dělat modelování dědičnosti v relačních databázích?

  4. Chyba při ukládání a získávání objektu blob z databáze SQL oracle