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();
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 |