Etiquetas

, ,


Vamos a realizar un ejemplo de un trigger muy sencillo en Postgres 8.3 trabajando con Ubuntu 8.10

Lo primero sería crear una tabla sobre la cual vamos a trabajar:

CREATE TABLE cliente (
rfc character varying(13) NOT NULL,
nombre character varying(32),
paterno character varying(32),
materno character varying(32),
domicilio character varying(32)
);

Hecho este paso, lo siguiente sería crear una funcion que actualice el nuevo insert y lo ponga en mayusculas.

CREATE OR REPLACE FUNCTION UPPER_CLIENTE() RETURNS trigger AS ‘
BEGIN
NEW.nombre := upper(NEW.nombre);
NEW.paterno := upper(NEW.paterno);
NEW.materno := upper(NEW.materno);
NEW.domicilio := upper(NEW.domicilio);
RETURN new;
END
‘ LANGUAGE plpgsql;

Aquí una Nota importante

Si dice que el lenguaje plpgsql NO EXISTE, es necesario crear una funcion que haga de enlace sobre el archivo llamado plpgsql.so, en mi caso se encuentra en la siguiente ubicación:

/usr/lib/postgresql/8.2/lib/plpgsql.so

Sabiendo esto vamos a crear la funcion que enlaza

CREATE FUNCTION plpgsql_call_handler () RETURNS OPAQUE AS
‘/usr/lib/postgresql/8.2/lib/plpgsql.so’ LANGUAGE ‘C’;

Y lo siguiente sería crear una funcion que llame a este nuevo enlace

CREATE LANGUAGE ‘plpgsql’ HANDLER plpgsql_call_handler LANCOMPILER ‘PL/pgSQL’;

Bueno, ahora sí podemos seguir sin problemas con nuestro trigger. Ya que tenemos la función que va a poner en mayusculas todas nuestras entradas, lo único que falta sería volver a realizar la creación de la función anterior y despues continuar con la instrucción de abajo.

CREATE TRIGGER mayusculas BEFORE INSERT or UPDATE
ON cliente FOR EACH ROW
EXECUTE PROCEDURE UPPER_CLIENTE(nombre, paterno, materno, direccion);

Nuestro Trigger utiliza como argumento a una funcion llamada UPPER_CLIENTE
con los datos de entrada que esa funcion requiere para su procesamiento.

Anuncios