9.68 PostgreSQL


Postgres, initialement développé au département de Science informatique, à UC Berkeley, mis en place la majorité des concepts des bases relationnelles, actuellement disponibles sur le marché. PostgreSQL accepte le langage SQL92/SQL3, assure l'intégrité transactionnelle, et l'extension de type. PostgreSQL est une évolution du code originale de Berkeley : il est Open Source et dans le domaine public.
PostgreSQL est disponible sans frais. La version actuelle est disponible à (en anglais) : www.PostgreSQL.org.
Depuis la version 6.3 (03/02/1998) PostgreSQL utilise les sockets UNIX, et une table est dédiée à ces nouvelles capacités. La socket est située dans le dossier `/tmp/.s.PGSQL.5432'. Cette option peut être activée avec '-i' passé au postmaster et cela s'interprète: "écoute sur les sockets TCP/IP et sur les sockets Unix".
Postmaster PHP Statut
postmaster & pg_connect("dbname=MonDbName"); OK
postmaster -i & pg_connect("dbname=MonDbName"); OK
postmaster & pg_connect("host=localhost dbname=MonDbName"); Unable to connect to PostgreSQL server: connectDB() failed: Impossible de se connecter au serveur PostgreSQL: connectDB() a échoué. Est ce que le postmaster fonctionne, et accepte les TCP/IP (option -i) sur le port '5432'?
postmaster -i & pg_connect("host=localhost dbname=MonDbName"); OK

Il est possible de se connecter avec la commande suivante : $conn = pg_Connect("host=monHote port=monPort tty=monTTY options=myOptions dbname=myDB user=myUser password=myPassword");
L'ancienne syntaxe : $conn = pg_connect("host", "port", "options", "tty", "dbname") est obsolète.
Pour utiliser l'interface des grands objets (large object (lo) interface), il est nécessaire de les placer dans un bloc de transaction. Un bloc de transaction commence avec begin et si la transaction se termine avec un commit et end. Si la transaction échoue, elle doit être conclue par un abort et rollback.
Utilisation des objets de grande taille (Large Objects)
<?php
$database = pg_connect("", "", "", "", "jacarta");
pg_exec($database, "begin");
    $oid = pg_locreate($database);
    echo "$oid\n";
    $handle = pg_loopen($database, $oid, "w");
    echo "$handle\n";
    pg_lowrite($handle, "gaga");
    pg_loclose($handle);
    pg_exec($database, "commit")
    pg_exec($database, "end")
?>
     

9.68.1 pg_close
Termine une connexion PostgreSQL

boolean pg_close (resource connection)
pg_close() retourne FALSE si l'index de connexion n'est pas valable, et TRUE sinon. pg_close() ferme la connexion au serveur PostgreSQL associé à connection.

Note : Il n'est généralement pas nécessaire de fermer une connexion non persistante, car elles sont automatiquement fermées à la fin d'un script.
pg_close() ne ferme pas les connexions persistantes ouvertes avec pg_pconnect().

9.68.2 pg_cmdtuples

Retourne le nombre de tuples affectés

int pg_cmdtuples (resource result_id)
pg_cmdtuples() retourne le nombre de tuples (instances) affectés par les requêtes INSERT, UPDATE, et DELETE. Si aucun tuple n'a été affecté, la fonction retournera 0.
pg_cmdtuples

<?php
$result = pg_exec($conn, "INSERT INTO verlag VALUES 
('Auteur')");
$cmdtuples = pg_cmdtuples($result);
echo $cmdtuples . " <- tuples modifiés.";
?>
      

Voir aussi pg_numfields() et pg_numrows().

9.68.3 pg_connect
Ouvre une connexion

resource pg_connect (string host, string port, string dbname)
resource pg_connect (string host, string port, string options, string dbname)
resource pg_connect (string host, string port, string options, string tty, string dbname)
resource pg_connect (string conn_string)
pg_connect() retourne un index de connexion en cas de succès, et FALSE sinon. pg_connect() ouvre une connexion à un serveur PostgreSQL. Les arguments doivent être placé entre guillemets.
Exemples avec pg_connect()
<?php
  $dbconn = pg_connect("dbname=marie");
  //connexion à une base de données nommée 
"marie"
  $dbconn2 = pg_connect("host=localhost port=5432 
dbname=marie");
  //connexion à une base de données nommée 
"marie" sur l'hôte "localhost" sur le port "5432"
  $dbconn3 = pg_Connect ("host=sheep port=5432 dbname=marie 
user=mouton password=baaaa");
  //connexion à une base de données nommée 
"marie" sur le serveur "mouton" avec
  // un nom d'utilisateur et le mot de passe associé
?>
      

Les arguments disponibles comptent notamment dbname port, host, tty, options, user, et password
pg_connect() retourne un index de connexion qui sera nécessaire aux autres fonctions PostgreSQL. Vous pouvez ouvrir plusieurs connexions simultanées.
Si un deuxième appel à pg_connect() est fait avec les mêmes arguments, aucune nouvelle connexion ne sera établit, mais la connexion précédente sera retournée.
L'ancienne syntaxe $conn = pg_connect("host", "port", "options", "tty", "dbname") est obsolète.
Voir aussi pg_pconnect().

9.68.4 pg_dbname
Nom de la base de données

string pg_dbname (resource connection)
pg_dbname() retourne le nom de la base de données PostgreSQL associée à l'index de connexion connexion, ou FALSE si connexion n'est pas valide.

9.68.5 pg_end_copy
Synchronise avec le serveur PostgreSQL

boolean pg_end_copy (resource connection )
pg_end_copy() synchronise le client PostgreSQL (ici PHP) avec le serveur, après une opération de copie. Il faut utiliser cette fonction, sous peine de recevoir une erreur "out of sync" (désynchronisé). pg_end_copy() retourne TRUE en cas de succès, et FALSE sinon.
Pour plus de détails et un exemple voyez : pg_put_line().

9.68.6 pg_errormessage
Message d'erreur

string pg_errormessage (resource connection)
pg_errormessage() retourne une chaîne contenant le dernier message d'erreur, ou FALSE en cas d'échec. Il sera impossible d'obtenir des détails sur l'erreur générée, en utilisant la fonction pg_errormessage() si une erreur est survenue dans la dernière action pour laquelle une connexion valide existe. pg_errormessage() retournera une chaîne contenant le message d'erreur généré par le serveur final.

9.68.7 pg_exec
Exécute une requête

resource pg_exec (resource connection, string query)
pg_exec() retourne un index de résultat, si la requête a été correctement exécutée, et FALSE en cas d'échec, ou si la connexion connection n'était pas un index de connexion valide. En cas d'erreur, le message d'erreur peut être obtenu grâce à la fonction pg_errormessage(), si l'index de connexion était valide. Envoie une requête à un serveur PostgreSQL identifié grâce à l'index de connexion. La réponse retournée par cette fonction est un index de résultat qui devra être utilisé pour accéder aux lignes de résultat, grâce à d'autres fonctions PostgreSQL.
Note : PHP/FI retournait 1 lorsque la requête n'attendait pas de données en réponse (insertion, modifcations, par exemple), et retournait un nombre plus grand que 1, même sur un select qui donnait un ensemble vide. Ce n'est plus le cas.

9.68.8 pg_fetch_array
Lit une ligne dans un tableau

array pg_fetch_array (resource result, int row, int result_type )
pg_fetch_array() retourne un tableau qui contient à la ligne demandée, dans le résultat identifiée par result, et FALSE , s'il ne reste plus de lignes.
pg_fetch_array() est une version évoluée de pg_fetch_row(). En plus de proposer un tableau à indice numérique, elle peut aussi enregistrer les données dans un tableau associatif, en utilisant les noms des champs comme clés.
L'argument optionnel result_type de pg_fetch_array() est une constante, qui peut prendre les valeurs suivantes : PGSQL_ASSOC, PGSQL_NUM, et PGSQL_BOTH.
Note : result_type a été ajoutée en PHP 4.0.

Il est important de noter que pg_fetch_array() n'est pas significativement plus lent que pg_fetch_row(), tandis qu'elle fournit un confort d'utilisation notable.
Pour plus de détails, reportez-vous à pg_fetch_row().

PostgreSQL fetch array
<?php
$conn = pg_pconnect("dbname=publisher");
if (!$conn) {
    echo "Erreur de connexion.\n";
    exit;
}
$result = pg_exec($conn, "SELECT * FROM authors");
if (!$result) {
    echo "Erreur durant la requete.\n";
    exit;
}
$arr = pg_fetch_array($result, 0);
echo $arr[0] . " <- array\n";
$arr = pg_fetch_array($result, 1);
echo $arr["author"] . " <- array\n";
?>
     

9.68.9 pg_fetch_object
Lit une ligne dans un objet

object pg_fetch_object (resource result, int row, int result_type )
pg_fetch_object() retourne un objet dont les membres sont les champs de la ligne demandée, ou FALSE , s'il n'y a plus de lignes.
pg_fetch_object() est similaire à pg_fetch_array(), avec une différence majeure : c'est un objet qui est retourné, au lieu d'un tableau. Par conséquent, cela signifie que vous ne pouvez accéder aux membres qu'avec leur nom, et non plus leur offset (les nombres ne sont pas autorisés comme nom de membre).
L'argument optionnel result_type de result_type est une constante qui peut prendre les valeurs suivantes : PGSQL_ASSOC, PGSQL_NUM, et PGSQL_BOTH.
Note : result_type a été ajouté dans PHP 4.0.

Au niveau vitesse, pg_fetch_object() est aussi rapide que pg_fetch_row() et presque aussi rapide que pg_fetch_row() (la différence est non significative).
Voir aussi pg_fetch_array() et pg_fetch_row().
Lecture d'un objet Postgres
<?php
$database = "verlag";
$db_conn = pg_connect("host=localhost port=5432 
dbname=$database");
if (!$db_conn):
?>
    <H1>Connexion impossible à la base postgres 
<?php echo $database ></H1> <?php
    exit;
endif;
$qu = pg_exec($db_conn, "SELECT * FROM verlag ORDER BY autor");
$row = 0; // postgres réclame un compteur de ligne, d'autres 
bases ne le font pas.
while ($data = pg_fetch_object($qu, $row)):
    echo $data->autor." (";
    echo $data->jahr ."): ";
    echo $data->titel."<BR>";
    $row++;
endwhile;
?>
<PRE><?php
$fields[] = array("autor", "Author");
$fields[] = array("jahr",  "  Year");
$fields[] = array("titel", " Title");
$row= 0; // Postgres réclame un compteur de ligne, d'autres 
bases ne le font pas.
while ($data = pg_fetch_object($qu, $row)):
    echo "----------\n";
    reset($fields);
    while (list(,$item) = each($fields)):
        echo $item[1].": ".$data->$item[0]."\n";
    endwhile;
    $row++;
endwhile;
echo "----------\n";
?>
</PRE>
<?php
pg_freeresult($qu);
pg_close($db_conn);
?>
      

9.68.10 pg_fetch_row
Lit une ligne dans un tableau

array pg_fetch_row (resource result, int row)
pg_fetch_row() retourne un tableau qui contient les données de la ligne demandée, ou FALSE , s'il ne reste plus de lignes.
pg_fetch_row() lit une ligne dans le résultat associé à l'index result. La ligne est retournée sous la forme d'un tableau. La ligne est retournée sous la forme d'un tableau, qui commence à l'index 0.
Les appels ultérieurs à pg_fetch_row() retourneront la ligne d'après, ou bien FALSE, lorsqu'il n'y aura plus de lignes.
Voir aussi: pg_fetch_array(), pg_fetch_object() et pg_result().
Postgres retourne une ligne
<?php
$conn = pg_pconnect("dbname=publisher");
if (!$conn) {
    echo "Une erreur est survenue.\n";
    exit;
}
$result = pg_exec($conn, "SELECT * FROM authors");
if (!$result) {
    echo "Une erreur est survenue.\n";
    exit;
}
$num = pg_numrows($result);
for ($i=0; $i<$num; $i++) {
  $r = pg_fetch_row($result, $i);
  for ($j=0; $j<count($r); $j++) {
    echo "$r[$j]&nbsp;";
  }
  echo "<br>";
}
?>
      

9.68.11 pg_fieldisnull
Teste si un champs est à NULL

int pg_fieldisnull (resource result_id, int row, mixed field)
pg_fieldisnull() teste si un champs est à NULL. pg_fieldisnull() retourne 0 si le champs n'est pas NULL. pg_fieldisnull() retourne 1 si le champs est à NULL. Le champs peut être identifié avec son nom ou son index numérique (commençant à 0).

9.68.12 pg_fieldname
Retourne le nom d'un champs

string pg_fieldname (resource result_id, int field_number)
pg_fieldname() va retourne le nom du champs qui occupe la colonne numéro field_number dans le résultat result_id. La numérotation des champs commence à 0.

9.68.13 pg_fieldnum
Retourne le numéro d'une colonne

int pg_fieldnum (resource result_id, string field_name)
pg_fieldnum() retourne le numéro de la colonne, dont le nom est field_name, dans le résultat result_id. La numérotation des champs commence à 0. Cette fonction retournera -1 en cas d'erreur.

9.68.14 pg_fieldprtlen
Retourne la taille imprimée

int pg_fieldprtlen (resource result_id, int row_number, string field_name)
pg_fieldprtlen() retourne la taille imprimée (nombre de caractères) d'une valeur donnée dans un résultat PostgreSQL. La numérotation des lignes commence à 0. Cette fonction retourne -1 en cas d'erreur.

9.68.15 pg_fieldsize
Retourne la taille interne de stockage d'un champs donné.

int pg_fieldsize (resource result_id, int field_number)
pg_fieldsize() retourne la taille interne de stockage d'un champs donné, en octets. pg_fieldsize() retourne -1 si la taille est variable. pg_fieldsize() retourne FALSE en cas d'erreur. La numérotation des colonnes commence à 0.

9.68.16 pg_fieldtype
Retourne le type d'un champs donné par index.

string pg_fieldtype (resource result_id, int field_number)
pg_fieldtype() retourne une chaîne contenant le type du champs donné par son index field_number . La numérotation des champs commence à 0.

9.68.17 pg_freeresult
Libère la mémoire

int pg_freeresult (resource result_id)
pg_freeresult() n'est vraiment utile que si vous risquez d'utiliser trop de mémoire durant votre script. La mémoire occupée par les résultats est automatiquement libérée à la fin du script. Mais, si vous êtes sûr de ne pas avoir besoin du résultat ultérieurement, vous pouvez appeler pg_freeresult() avec l'index de résultat comme argument, et la mémoire sera libérée.

9.68.18 pg_getlastoid
Retourne le dernier identifiant d'objet

resource pg_getlastoid (resource result_id)
pg_getlastoid() sert à lire l'Oid assigné à un tuple inséré, si l'index de résultat a été obtenu avec la fonction pg_exec(), dont la requête était exclusivement SQL INSERT. Cette fonction retourne un entier positif si un Oid valide a été trouvé. Elle retournera -1 si une erreur est survenue, ou si la dernière commande n'était pas un INSERT.

9.68.19 pg_host
Retourne le nom d'hôte

string pg_host (resource connection_id)
pg_host() retourne le nom d'hôte associé à l'index de connexion PostgreSQL.

9.68.20 pg_loclose
Ferme un objet de grande taille

void pg_loclose (resource fd)
pg_loclose() ferme un objet de type Inversion Large Object. fd est un descripteur de fichier, obtenu avec pg_loopen().

9.68.21 pg_locreate
Crée un objet de grande taille

resource pg_loimport (resource conn)
pg_locreate() crée un objet de type Inversion Large Object et retourne son Oid. conn doit être une connexion valide avec une base de données PostgreSQL. Les modes d'accès PostgreSQL INV_READ, INV_WRITE, et INV_ARCHIVE ne sont pas supportés : l'objet peut toujours être créé, avec des droits d'accès en lecture et écriture. Le mode INV_ARCHIVE a été supprimé des bases PostgreSQL (version 6.3 et ultérieur).

9.68.22 pg_loexport
Exporte un objet de grande taille vers un fichier

boolean pg_loexport (resource oid , int file , resource connection_id )
pg_loexport() exporte un objet de grande taille dans un fichier. oid est un identifiant d'objet de grande taille qui sera exporté dans le fichier filename, qui spécifie son chemin. pg_loexport() retourne FALSE si une erreur survient, et TRUE en cas de succès. N'oubliez pas que la manipulation d'un objet de grande taille dans PostgreSQL doit intervenir dans une transaction.

9.68.23 pg_loimport
Importe un objet de grande taille depuis un fichier

resource pg_loimport (int file , resource connection_id )
filename est le chemin jusqu'à un fichier qui servira de source pour créer un objet de grande taille. La fonction retourne FALSE en cas d'erreur, et sinon un identifiant d'objet, créé directement à la bonne taille. N'oubliez pas que la manipulation d'un objet de grande taille dans PostgreSQL doit intervenir dans une transaction.

9.68.24 pg_loopen
Ouvre un objet de grande taille

int pg_loopen (resource conn, resource objoid, string mode)
pg_loopen() ouvre un objet de type Inversion Large Object et retourne un descripteur de fichier pour cet objet. Le descripteur de fichier contient les informations de connexion. Ne refermez pas la connexion avant d'avoir fermé l'objet. objoid est un Oid valide de Large Object, et mode peut prendre es valeurs suivantes : "r", "w", ou "rw".

9.68.25 pg_loread
Lit un objet de grande taille

string pg_loread (resource loid, int len)
pg_loread() lit au plus len octets d'un objet de grande taille, et retourne les données sous la forme d'une chaîne. loid est un identifiant valide d'objet de grande taille, et len indique la taille maximale de mémoire alloué à l'objet de grande taille.

9.68.26 pg_loreadall
Lit un objet de grande taille en totalité

void pg_loreadall (resource fd)
pg_loreadall() lit un objet de grande taille en totalité et le passe directement au client, après les en-têtes adéquates. Cette fonction est prévue pour transmettre des sons ou des images.

9.68.27 pg_lounlink
Efface un objet de grande taille

void pg_lounlink (resource conn, resource lobjid)
pg_lounlink() efface l'objet de grande taille dont l'identifiant est lobjid.

9.68.28 pg_lowrite
Ecrit un objet de grande taille

int pg_lowrite (resource fd, string buf)
pg_lowrite() écrit dans l'objet de grande taille autant de données possible, issues de la variable buf et retourne le nombre d'octets réellement écrits, ou FALSE en cas d'erreur. fd est un descripteut d'objet de grande taille, obtenu avec pg_loopen().

9.68.29 pg_numfields
Retourne le nombre de champs

int pg_numfields (resource result_id)
pg_numfields() retourne le nombre de champs ou (colonnes) d'un résultat PostgreSQL. L'argument doit être un identifiant de résultat valide retourné par pg_exec(). Cette fonction retournera -1 en cas d'erreur.
Voir aussi pg_numrows() et pg_cmdtuples().

9.68.30 pg_numrows
Retourne le nombre de lignes

int pg_numrows (resource result_id)
pg_numrows() retourne le nombre de lignes d'un résultat PostgreSQL. L'argument doit être un identifiant de résultat valide retourné par pg_exec(). Cette fonction retournera -1 en cas d'erreur.
Voir aussi pg_numfields() et pg_cmdtuples().

9.68.31 pg_options
Retourne les options

string pg_options (resource connection_id)
pg_options() retourne une chaîne contenant les options de la connexion PostgreSQL.

9.68.32 pg_pconnect
Etablit une connexion persistante.

int pg_pconnect (string conn_string)
pg_pconnect() retourne un index de connexion en cas de succès, ou FALSE en cas d'erreur. pg_pconnect() ouvre une connexion permanente à une base PostgreSQL. Les arguments doivent être insérés dans une chaîne à guillemets. Ils incluent : host, port, tty, options, dbname, user et password.
pg_pconnect() retourne un indentifiant de connexion qui sera utilisées par les autres fonctions PostgreSQL. Vous pouvez ouvrir plusieurs connexions en même temps.
L'ancienne syntaxe $conn = pg_pconnect("host", "port", "options", "tty", "dbname") est obsolète.

9.68.33 pg_port
Retourne le numéro de port

int pg_port (resource connection_id)
pg_port() retourne le numéro de port de la connexion identifiée connection_id.

9.68.34 pg_put_line
Envoie une chaîne au serveur PostgreSQL

boolean pg_put_line (resource connection_id , string data)
pg_put_line() envoie une chaîne (terminée par NULL) au serveur PostgreSQL. Ceci est pratique pour effectuer des insertions très rapides dans une table, initiée par une opération de copie PostgreSQL copy-operation. Le caractère final NULL est automatiquement ajouté. pg_put_line() retourne TRUE en cas de succès, et FALSE.

Note : Notez que l'application doit explicitement ajouter les deux caractères "\." à la fin de la chaîne pour indiquer au serveur qu'elle a finit d'envoyer des données.
Voir aussi pg_end_copy().
Insertion à grande vitesse dans une table
<?php
    $conn = pg_pconnect("dbname=foo");
    pg_exec($conn, "create table bar (a int4, b char(16), d 
float8)");
    pg_exec($conn, "copy bar from stdin");
    pg_put_line($conn, "3\tBonjour le monde\t4.5\n");
    pg_put_line($conn, "4\tAu revoir le monde\t7.11\n");
    pg_put_line($conn, "\\.\n");
    pg_end_copy($conn);
?>
      

9.68.35 pg_result
Retourne les valeurs d'un identifiant de résultat

mixed pg_result (resource result_id, int row_number, mixed fieldname)
pg_result() retourne les valeurs d'un identifiant de résultat, produit par pg_exec(). Les arguments row_number et fieldname précisent la cellule qui sera retournée. La numérotation des lignes commence à 0. Au lieu d'utiliser le nom du champs, vous pouvez utiliser son index, sous la forme d'un nombre sans guillemets. La numérotation des champs commence à 0.
PostgreSQL dispose de nombreux types, et seuls, les types basiques sont supportés ici. Toutes les formes d'entier, booléen et Oid sont retournés sous la forme d'entiers. Toutes les formes de nombre à virgule flottante et types réels sont retournés sous la forme d'une valeur de type double. Tous les autres types, y compris les tableaux, sont retournés sous la forme de chaînes formatées, au format par défaut de PostgreSQL.

9.68.36 pg_set_client_encoding
Choisit l'encodage du client

int pg_set_client_encoding (resource connection , string encoding)
pg_set_client_encoding() fixe l'encodage du client. Elle retourne 0 en cas de succès, et -1 sinon.
encoding est l'encodage du client, et peut être SQL_ASCII, EUC_JP, EUC_CN, EUC_KR, EUC_TW, UNICODE, MULE_INTERNAL, LATINX (X=1...9), KOI8, WIN, ALT, SJIS, BIG5, WIN1250.

Note : Cette fonction requiert PHP-4.0.2 ou plus récent et PostgreSQL-7.0 ou plus récent.
Jadis, pg_set_client_encoding() s'appelait pg_setclientencoding().
Voir aussi pg_client_encoding().

9.68.37 pg_client_encoding
Lit l'encodage du client

string pg_client_encoding (resource connection )
pg_client_encoding() retourne l'encodage du client. Elle retourne une des valeurs suivantes : SQL_ASCII, EUC_JP, EUC_CN, EUC_KR, EUC_TW, UNICODE, MULE_INTERNAL, LATINX (X=1...9), KOI8, WIN, ALT, SJIS, BIG5, WIN1250.

Note : Cette fonction requiert PHP-4.0.2 ou plus récent et PostgreSQL-7.0 ou plus récent.
Jadis, pg_client_encoding() s'appelait pg_clientencoding().
Voir aussi pg_set_client_encoding().

9.68.38 pg_trace
Active le suivi d'une connexion PostgreSQL

boolean pg_trace (string filename , string mode , resource connection )
pg_trace() active le suivi des communications entre PHP et le serveur PostgreSQL. Cet historique sera enregistré dans un fichier. Pour comprendre ces lignes, il faut être familier avec le protocole de communication interne à PostgreSQL. Pour ceux qui le ne sont pas, elles peuvent être utiles pour suivre les requêtes et les erreurs : avec la commande grep '^To backend' trace.log, vous pourrez voir les requêtes réellement envoyées au serveur PostgreSQL.
filename et mode sont les mêmes arguments que pour la fonction fopen() (mode par défaut à 'w'), connection indique la connexion à suivre. Par défaut, c'est la dernière ouverte.
pg_trace() retourne TRUE si filename a pu être ouvert en écriture, et FALSE sinon.
Voir aussi fopen() et pg_untrace().

9.68.39 pg_tty
Retourne le nom de tty

string pg_tty (resource connection_id)
pg_tty() retourne le nom de tty de la connexion associée à connection_id.

9.68.40 pg_untrace
Termine le suivi d'une connexion PostgreSQL

boolean pg_untrace (resource connection )
pg_untrace() termine le suivi d'une connexion PostgreSQL, initiée avec pg_trace(). connection indique la connexion à suivre. Par défaut, c'est la dernière ouverte.
pg_untrace() retourne toujours TRUE.
Voir aussi pg_trace().