Laboratorio 8

Anuncio
Laboratorio 8
Profesora: Andrea Rodrı́guez
Ayudante: Daniel Campos
Bases de Datos I
Universidad de Concepción
19 de octubre de 2012
PL/SQL - Functions
CREATE OR REPLACE FUNCTION nombrefuncion(param, ...)
RETURNS tiporetorno
AS $$
DECLARE
variable1;
variable2;
BEGIN
sentencia; -- Linea de comentario
sentencia; /*Bloque de comentarios*/
RETURN retorno;
END;
$$
Language ’plpgsql’;
[Ciclos]
While
WHILE (condicion)
LOOP
...
sentencia;
...
END LOOP;
For
FOR cont IN 1 .. 10
LOOP
...
sentencia;
...
END LOOP;
PL/SQL - Triggers
Los triggers son funciones que se ejecutan de forma automática
en respuesta a ciertos eventos (insert, update, delete).
CREATE OR REPLACE FUNCTION nombrefuncion(param, ...)
RETURNS trigger
AS $$
DECLARE
variable1;
variable2;
BEGIN
sentencia; -- Linea de comentario
sentencia; /*Bloque de comentarios*/
RETURN retorno;
END;
$$
Language ’plpgsql’;
PL/SQL - Triggers [2]
CREATE OR REPLACE TRIGGER nombretrigger
[AFTER|BEFORE] [INSERT|UPDATE|DELETE]
ON nombretabla
FOR EACH [ROW | STATEMENT]
EXECUTE PROCEDURE nombrefuncion;
PL/SQL - Triggers - Ejemplo
[Variables]
Postgres
I
current user: usuario que actualmente está accediendo a la
base de datos
I
current date: fecha actual
I
current time: hora actual
Triggers
I
NEW: almacena los nuevos valores de la tupla que se
está modificando
I
OLD: almacena los antiguos valores de la tupla que se
está modificando
I
TG OP: Tipo de evento que esta ocurriendo (insert, update o
delete) p
I
TG ARGV: Parámetros de la función del TRIGGER
(TG ARGV[0], ... )
Ejercicio
Se desea que las etiquetas asociadas a un mensaje sean ingresadas
automaticamente, si es que estas etiquetas no existen en la base de
datos.
Ejercicio - Respuesta
CREATE OR REPLACE FUNCTION insertar_etiqueta()
RETURNS trigger
AS $$
BEGIN
IF (TG_OP = ’INSERT’) THEN
IF( (SELECT nombre
FROM etiqueta
WHERE NEW.etiqueta = nombre) IS NULL ) THEN
INSERT INTO etiqueta VALUES (NEW.etiqueta);
RETURN NEW;
END IF;
END IF;
RETURN NEW;
END;
$$
Language ’plpgsql’;
Ejercicio - Respuesta [2]
CREATE TRIGGER insertar_etiqueta_mensaje
BEFORE INSERT ON etiqueta_mensaje
FOR EACH ROW
EXECUTE PROCEDURE insertar_etiqueta();
Ejercicio
Se desea mantener un registro de los mensajes eliminados por los
usuarios.
PHP - Introducción
I
Se puede incluir codigo PHP dentro de HTML usando las
etiquetas
<?php ... ?>
I
Las variables no tienen tipo declarado, se le asigna cuando se
le asigna un valor y son nombradas con un $
PHP - Introducción [2]
Funciones de Postgres
I
pg connect: Permite establecer una conexión con la base de
datos.
I
pg query: Ejecuta una consulta de cualquier tipo en la base de
datos ( insert, update o delete).
I
pg close: Cierra la conexión con la base de datos.
I
pg fetch array: Convierte cada fila devuelta por una consulta
en un Array.
I
pg fetch assoc: Convierte cada fila devuelta por una consulta
en una Array Asociativo.
PHP - Introducción [3]
<?php
$conexion = pg_connect("host=plop.inf.udec.cl port=5432
dbname=BDIG15 user=bdg15 password=bdg1515")
$resultado = pg_query($conexion, "SELECT .... ");
while ( $fila = mysql_fetch_array($resultado) ) {
echo .... ;
}
pg_close($conexion);
?>
Referencias
Manual de PostgreSQL
http://www.postgresql.org/docs/9.1/static/ Manual de
PHP sobre PostgreSQL
http://www.php.net/manual/en/ref.pgsql.php
Descargar