Re: Crear Tablas con reglas

From: Miguel Rodríguez Penabad <penabad(at)gmail(dot)com>
To: Erich Javier Briceño Fernadez <erich(dot)briceno(at)cne(dot)gob(dot)ve>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Crear Tablas con reglas
Date: 2007-07-18 22:18:04
Message-ID: 95335e4e0707181518l5b81a55blbfdaf2d23b740837@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El 18/07/07, Erich Javier Briceño Fernadez <erich(dot)briceno(at)cne(dot)gob(dot)ve> escribió:
> Buenas a todos,
> Disculpen la pregunta pero no consigo en la documentación como resolver el
> problema.
> Estoy aprendiendo a trabajar en Postgres,

Bienvenido ;)

> y me gustaría crear una tabla que contenga un campo tipo character(50) pero
> deseo saber si existe alguna forma de definir la tabla para que Postgres
> realice un upper() sobre dicho dato (antes de almacenar) para que todos
> estén grabados en mayúsculas.

Hasta donde yo se, no se puede hacer de forma automática en la definición de la
tabla, ni con reglas (RULEs). La única forma que yo he visto es hacerlo mediante
disparadores (triggers). Aquí te mando un ejemplillo.

CREATE TABLE test(campo char(50));

CREATE FUNCTION fmayusc()
RETURNS TRIGGER
LANGUAGE plpgsql
AS $$
BEGIN
NEW.campo := upper(NEW.campo);
RETURN NEW;
END
$$;

CREATE TRIGGER tmayusc
BEFORE INSERT OR UPDATE ON test
FOR EACH ROW EXECUTE PROCEDURE fmayusc();

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Miguel Rodríguez Penabad 2007-07-18 22:22:55 Re: SELECT INTO
Previous Message Javier Ochoa 2007-07-18 21:56:10 RE: Velocidad al traer datos desde la base