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

Zrušení přidělování připravených dotazů

Při uvolnění příkazu se vrátí hodnota pg_query označuje úspěch nebo ne, jako u jakéhokoli „prohlášení o užitečnosti“. Při selhání by měl vrátit hodnotu false. Například:

 if (!pg_query($cnx, "deallocate foobar")) {
   echo "Error deallocate: " . pg_last_error($cnx);
 }
 else {
  echo "deallocate successful";
 }

Zobrazí se:

Všimněte si, že název příkazu, který se má uvolnit, nesmí být obklopen jednoduchými uvozovkami, protože se jedná o identifikátor, nikoli řetězcový literál. Pokud je nutné jej uzavřít kvůli problematickým znakům, lze to provést pomocí pg_escape_identifier (php> =5.4.4)

Pro vyčištění relace není ani nutné opakovat připravené příkazy a rozdělit je jeden po druhém, můžete zavolat DEALLOCATE ALL místo toho stále s pg_query .

Existuje také další prohlášení, které provede více vyčištění v jednom dotazu:DISCARD ALL

Nic z toho není ani nutné, pokud se skript skutečně odpojí od postgresu, protože připravené příkazy jsou lokální pro jejich nadřazenou relaci a zemřou s ní.

Explicitní vyčištění je nutné při použití opětovného použití připojení mezi skripty, buď s trvalými připojeními pomocí PHP (pg_pconnect ), nebo sdružování připojení jako pgBouncer (ačkoli samotný pooler může volat DISCARD ALL v závislosti na jeho konfiguraci).



  1. Agregace posledních připojených záznamů za týden

  2. Chyba MySQL:#1142 - Příkaz SELECT byl uživateli odepřen

  3. chyba rozlišení názvu funkce oracle pl/sql

  4. Duplicitní hodnota klíče porušuje jedinečné omezení, CakePHP