Re: consulta sobre creacion de triggers en postgres

From: "Jaime Casanova" <systemguards(at)gmail(dot)com>
To: Miguel Rodríguez Penabad <penabad(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 23:50:40
Message-ID: c2d9e70e0709051650i11d75df8k973bb688853cf129@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On 9/5/07, Miguel Rodríguez Penabad <penabad(at)gmail(dot)com> wrote:
> 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".
>

se aparta del estándar cuando hace algo que no está en el estándar.
por ejemplo, EXECUTE PROCEDURE viendolo bien no es parte del estándar.
(punto concedido)

Pero el usar una funcion en vez de un bloque BEGIN ATOMIC - END es
completamente permitido.

Mas bien, el gran problema de postgres no es apartarse del estándar
(al menos no en la parte esencial) sino el no implementar el estándar
por completo.

--
Atentamente,
Jaime Casanova

"Programming today is a race between software engineers striving to
build bigger and better idiot-proof programs and the universe trying
to produce bigger and better idiots.
So far, the universe is winning."
Richard Cook

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Arturo Munive 2007-09-05 23:51:14 Re: Tecnicas para mejora de eficiencia en consultas
Previous Message Arturo Munive 2007-09-05 23:49:51 Re: Tecnicas para mejora de eficiencia en consultas