Trigger para poner a mayusculas

From: "Osvaldo Rivas" <spadons(at)gmail(dot)com>
To: "Ayuda Postgres" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Trigger para poner a mayusculas
Date: 2009-10-04 17:52:09
Message-ID: 7CC8249EA0C542F09D04F3DB034F2AC4@SPADONSPC
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola a todos, estoy tratando de hace una función que ponga a mayúsculas todos los campos varchar de un tabla, esta función se activa con un trigger en la tabla. Pero hay algo que esta mal, abajo les copio la definición de mi función, el trigger y una tabla. Muchas Gracias.

CREATE OR REPLACE FUNCTION sbs.tg_upper_att()
RETURNS trigger AS
$BODY$

DECLARE
R_COL RECORD;
COLUMN VARCHAR(150);
BEGIN
FOR R_COL IN (

--Busco todos las columnas VARCHAR para la tabla que llamo a la funcion.
SELECT
AT.ATTNAME
FROM
PG_ATTRIBUTE AT,
PG_TYPE TY,
PG_CLASS CL
WHERE
AT.ATTTYPID = TY.OID
AND AT.ATTRELID = CL.OID
AND AT.ATTNUM >= 0
AND CL.RELNAME = TG_TABLE_NAME
AND TY.TYPNAME = 'varchar'
)
LOOP

--Para cada fila recuperada optengo NEW.NOMBRE_DE_LA_COLUMNA
COLUMN:='NEW.'||R_COL.ATTNAME;

--Pongo en mayuscula la columna
COLUMN:=UPPER(COLUMN);

END LOOP;

RETURN NEW;

END;

$BODY$
LANGUAGE 'plpgsql' VOLATILE;

CREATE TABLE sbs.paises
(
pais_codigo character varying(2) NOT NULL,
pais_descripcion character varying(50) NOT NULL,
CONSTRAINT paises_pkey PRIMARY KEY (pais_codigo),
CONSTRAINT paises_pais_descripcion_key UNIQUE (pais_descripcion)
);

CREATE TRIGGER "01UPPERVAR"
BEFORE INSERT OR UPDATE
ON sbs.paises
FOR EACH ROW
EXECUTE PROCEDURE sbs.tg_upper_att();

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2009-10-05 01:00:31 Re: Trigger para poner a mayusculas
Previous Message Osvaldo Rivas 2009-10-04 17:16:55 Re: Sequencias