From: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
---|---|
To: | cristian <clopez(at)sol(dot)info(dot)unlp(dot)edu(dot)ar> |
Cc: | postgresql <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Trigger y funciones |
Date: | 2006-02-15 01:48:03 |
Message-ID: | 20060215014803.GF32543@surnet.cl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
cristian escribió:
> CREATE FUNCTION createDateOnly() RETURNS TRIGGER AS '
> BEGIN
> SELECT * INTO hora FROM dominio;
> NEW.date = to_date(to_char(NEW.timestamp - interval 'hora hours',
> 'YYYYMMDD'),'YYYYMMDD');
> RETURN NEW;
> END;
Tienes que usar la variable fuera de un literal de cadena, por ejemplo
asi:
CREATE FUNCTION createDateOnly() RETURNS TRIGGER AS '
BEGIN
SELECT * INTO hora FROM dominio;
NEW.date = NEW.timestamp - hora * '1 hours'::interval;
RETURN NEW;
END;
Esa mala costumbre de estar usando to_date y to_char para todo, cuando
es claramente innecesario, es bastante nociva ... De ser posible, evita
las conversiones a texto como si fueran plaga (gripe aviar, que está de
moda). Supongo que es otra de las malas costumbres de la gente que
viene de Oracle.
Por supuesto que esta funcion ni siquiera compila, porque tiene
problemas con las comillas y la variable date no esta declarada, pero
espero que se entienda la idea.
--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2006-02-15 01:53:57 | Re: Backups |
Previous Message | Alvaro Herrera | 2006-02-15 01:43:55 | Re: Busqueda utilizando LIKE |