LXII. Funciones de PostgreSQL

Postgres, desarrollado originalmente en el UC Berkeley Computer Science Department, ha sido pionero en muchos de los conceptos relacionales/orientados a objeto que ahora están empezando a estar disponibles en algunas bases de datos comperciales. Tiene soporte de lenguaje SQL92/SQL3, integridad transaccional, y extensibilidad de tipos. PostgreSQL es un descendiente de dominio público, más concretamente open source, del código original de Berkeley.

PostgreSQL se encuentra disponible sin coste alguno. La versión actual la tienes a tu disposición en www.PostgreSQL.org.

Desde la versión 6.3 (02/03/1998) PostgreSQL usa sockets tipo Unix. Abajo se da una tabla con las diferentes posibilidades. El socket se encuentra en el ficheero /tmp/.s.PGSQL.5432. Esta opción se controla mediante el flag '-i' del postmaster y cuando se incluye significa "escuchar sockets TCP/IP además de los de dominio Unix" ya que si no se le dice nada solo escucha sockets tipo Unix.

Tabla 1. Postmaster y PHP

PostmasterPHPEstado
postmaster &pg_connect("", "", "", "", "dbname");OK
postmaster -i &pg_connect("", "", "", "", "dbname");OK
postmaster &pg_connect("localhost", "", "", "", "dbname"); Unable to connect to PostgreSQL server: connectDB() failed: Is the postmaster running and accepting TCP/IP (with -i) connection at 'localhost' on port '5432'? in /path/to/file.php3 on line 20. (Imposible conectar al servidor PostgreSQL, la llamada connectDB() ha fallado: ¿Está funcionando el postmaster aceptando conextiones TCP/IP (con -i) en 'localhost' en el puerto '5432'? en /path/to/file.php3 en linea 20.
postmaster -i &pg_connect("localhost", "", "", "", "dbname");OK

Uno puede establecer una conexión con el siguiente comando:

Para usar el interface de objetos grandes (large object o lo), es necesario encapsularlo en un bloque de transacción. Un bloque de transacción empieza con un begin y si la transacción fue valida termina con commit y end. Si la transacción falla debe ser cerrada con abort y rollback.

Ejemplo 1. Usando Objetos Grandes (lo)


<?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")
?>
     

Tabla de contenidos
pg_Close — Cierra una conexión PostgreSQL
pg_cmdTuples — Devuelve el número de tuplas afectadas
pg_Connect — Abre una conexión
pg_DBname — Nombre de la base de datos
pg_ErrorMessage — mensaje de error
pg_Exec — Ejecuta una consulta (query)
pg_Fetch_Array — obtiene una fila en la forma de un array
pg_Fetch_Object — obtener una fila en forma de objeto
pg_Fetch_Row — obtiene la fila como un array enumerado
pg_FieldIsNull — Comprueba si un campo es NULO
pg_FieldName — Devuelve el nombre de un campo
pg_FieldNum — Devuelve el número de una columna
pg_FieldPrtLen — Devuelve la longitud impresa
pg_FieldSize — Devuelve el tamaño de almacenamiento interno de un campo en concreto
pg_FieldType — Devuelve el nombre del tipo de dato correspondiente al campo cuyo número pasamos como parámetro
pg_FreeResult — Libera memoria
pg_GetLastOid — Devuelve el identificador del último objeto insertado
pg_Host — Devuelve el nombre del host
pg_loclose — Cierra un objeto grande (large object)
pg_locreate — Crea un objeto grande
pg_loopen — Abre un objeto grande
pg_loread — lee un large object (objeto grande)
pg_loreadall — Lee un objeto grande entero
pg_lounlink — borra un large object
pg_lowrite — escribe en un objeto grande
pg_NumFields — Devuelve el número de campos
pg_NumRows — Devuelve el número de filas
pg_Options — Devuelve opciones
pg_pConnect — Crea una conexión persistente con una base de datos
pg_Port — Devuelve el número de puerto
pg_Result — Devuelve valores a partir de un identificador de resultado
pg_tty — Devuelve el nombre del tty