From: | Miguel Rodríguez Penabad <penabad(at)gmail(dot)com> |
---|---|
To: | "Jaime Casanova" <systemguards(at)gmail(dot)com> |
Cc: | "Paul Gallegos" <paul_ic(at)hotmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: consulta sobre creacion de triggers en postgres |
Date: | 2007-09-05 08:13:01 |
Message-ID: | 95335e4e0709050113l7f721405gba96be265a8a57ee@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
El 5/09/07, Jaime Casanova <systemguards(at)gmail(dot)com> escribió:
> On 9/4/07, Miguel Rodríguez Penabad <penabad(at)gmail(dot)com> wrote:
> > El 4/09/07, Paul Gallegos <paul_ic(at)hotmail(dot)com> escribió:
> > ...
> > > Mi consulta es: Se puede crear un trigger en postgres de la manera que se
> > > hace en Oracle? es decir sin crear la funcion previamente?
> >
> > No. En la sintaxis de creación del trigger sólo tienes EXECUTE PROCEDURE...
> > así que tienes que crear antes la función.
> >
> > > Y si la respuesta es no, porque no se puede? porque se crean de esta
> > > manera?, osea que ventaja o desventaja tiene postgres al crear los triggers
> > > de dicha manera?
> >
> > A mi me sorprendió bastante también, porque se aparta de la sintaxis
> > del SQL estándar (Oracle se parece más).
>
> no, no se aparta del estándar.
> http://archives.postgresql.org/pgsql-es-ayuda/2007-07/msg00046.php
Ya había visto este mensaje con anterioridad, y discrepo totalmente en
cuanto a que la SINTAXIS de los triggers de postgres siguen el
estándar.
Dice ese mensaje que citas
<triggered SQL statement> ::=
<SQL procedure statement>
| BEGIN ATOMIC
{ <SQL procedure statement> <semicolon> } ...
END
donde <SQL procedure statement> puede ser un <SQL-invoked routine>
Pero el <SQL procedure statement> puede ser una sentencia SQL
"normalita" (un select, un insert, un create table...) y no una
llamada a un procedimiento, y ahí sí que se aparta.
De la misma forma se aparta del estándar al no incluir la cláusula "WHEN".
En cualquier caso no lo decía como crítica, sino como comentario de mi
experiencia personal con diversos gestores de bd. Yo he tenido que
trabajar mucho con triggers en Oracle y sus "mutating tables" y
problemas asociados, y cuando empecé a crear triggers en PostgreSQL y
me funcionaban bien sin tener que hacer "trucos raros", lo de adaptar
la sintaxis fue lo de menos.
Saludos
From | Date | Subject | |
---|---|---|---|
Next Message | Mauro Tello | 2007-09-05 11:43:41 | Conexion refused |
Previous Message | Paul Gallegos | 2007-09-05 05:51:18 | sobre empresas que usan postgres |