From: | "Paul Gallegos" <paul_ic(at)hotmail(dot)com> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: consulta sobre creacion de triggers en postgres |
Date: | 2007-09-05 19:29:50 |
Message-ID: | BAY126-F3841F254F44B86645EB56D92CB0@phx.gbl |
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
>--
Concuerdo contigo, pero lo importante es que postgres nos da todas las
opciones necesarias para crear triggers que se acomoden a todas las
necesidades, apegandose o no al estandar SQL, puede ser que en un principio
sea un poco complicado adecuarse a su forma de trabajar (me refiero a la
sintaxis), pero cumple totalmente con todos los requisitos de una buena BD.
Por ejemplo por mi experiencia, postgres no posee los comandos (o clausulas)
INSERTING, DELETING, UPDATING para los triggers, que manejan los eventos,
pero se puede usar en lugar de ellas, lo siguiente en el cuerpo de las
funciones:
TG_OP = 'INSERT' ---> INSERTING
TG_OP = 'DELETE' ---> DELETING
TG_OP = 'UPDATE' ---> UPDATING
Estos se usan para cuendo se crea un trigger para mas de un evento, entonces
en la funcion se hara lo que corresponda segun el evento.
Hasta ahora puedo solo comentar cosas buenas de postgres.
bye
_________________________________________________________________
De todo para la Mujer Latina http://latino.msn.com/mujer/
From | Date | Subject | |
---|---|---|---|
Next Message | Paul Gallegos | 2007-09-05 19:41:59 | Re: sobre empresas que usan postgres |
Previous Message | Guillermo Muñoz | 2007-09-05 19:07:01 | Re: now() en function |