Re: consulta sobre creacion de triggers en postgres

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/

In response to

Browse pgsql-es-ayuda by date

  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