sql >> Databasteknik >  >> RDS >> PostgreSQL

Avfördelning av förberedda frågor

När satsen avallokeras, returnerar värdet för pg_query indikerar framgång eller inte, som för alla "nyttoförklaringar". Vid misslyckande bör den returnera falskt. Till exempel:

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

Detta visar:

Observera att satsnamnet som ska deallokeras inte får omges av enkla citattecken, eftersom det är en identifierare, inte en bokstavlig sträng. Om det skulle behöva bifogas på grund av problematiska tecken, kan det göras med pg_escape_identifier (php> =5.4.4)

För att rensa upp en session är det inte ens nödvändigt att upprepa de förberedda uttalandena och deallokera dem en efter en, du kan ringa AVTALA ALLA istället, fortfarande med pg_query .

Det finns också ett annat uttalande som städar mer i en fråga: KASSA ALLA

Dessutom är inget av detta ens nödvändigt om skriptet verkligen kopplar bort från postgres, eftersom förberedda uttalanden är lokala för deras föräldersession och dör med det.

Den explicita rensningen är nödvändig när du använder anslutningsåteranvändning mellan skript, antingen med beständiga anslutningar med PHP (pg_pconnect ), eller en anslutningspoolare som pgBouncer (även om poolaren själv kan anropa KASSA ALLA beroende på dess konfiguration).



  1. Utlösare för sessionsändring?

  2. En flexibel främmande nyckel

  3. SUMMA ett par ANTAL från två tabeller baserat på en tidsvariabel

  4. 30 tabeller med få rader - TRUNCATE det snabbaste sättet att tömma dem och återställa bifogade sekvenser?