Re: consulta sobre creacion de triggers en postgres

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

In response to

Responses

Browse pgsql-es-ayuda by date

  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