Re: Regla sobre tabla

From: Jaime Casanova <systemguards(at)gmail(dot)com>
To: Juan Pablo Espino <jp(dot)espino(at)gmail(dot)com>
Cc: Pgsql-Es-Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Regla sobre tabla
Date: 2005-03-24 06:41:27
Message-ID: c2d9e70e0503232241702bb371@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Wed, 23 Mar 2005 15:07:51 -0500, Juan Pablo Espino
<jp(dot)espino(at)gmail(dot)com> wrote:
> Que tal, saludos a todos.
>
> Me preguntaba si era posible aplicarle reglas a las tablas
> directamente, asi que intente lo siguiente.
>
> CREATE OR REPLACE RULE prueba AS
> ON DELETE TO journey DO INSTEAD DELETE FROM journey
> WHERE journey.anio = 2001;
>
> Ejecute las instrucciones y todo bien:
>
> Query returned successfully with no result in 130 ms.
>
>
> Bueno la tabla journey tiene dos columnas, disco y anio, entonces pues
> la regla debe eliminar solo la fila en donde journey.anio = 2001, pero
> lamentablemente parece que no es asi y este fue el resultado
>
> ERROR: infinite recursion detected in rules for relation "journey"
>
La regla dice cuando borre una fila en la tabla journey en su lugar
borre de la tabla journey (la misma tabla) los registros con anio =
2001. Pero al ejecutarse la regla estas borrando registros, por lo
tanto se ejecuta la regla otra vez y asi sucesivamente hasta el
infinito. Postgres en vez de dejarte sufrir detecta esto y te lo
advierte, ese es el mensaje.

> me gustaria saber por que sucede esto y si hay alguna forma de usar
> las reglas directamente sobre las tablas, esto es sin necesidad de
> crear una vista a la tabla, salduos y muchas gracias.
>
Si, pero no de la forma en que lo haces, imagina por ejemplo:

CREATE OR REPLACE RULE prueba AS
ON DELETE TO journey DO INSTEAD
UPDATE journey set estado = 'E' WHERE journey.anio = 2001;

De todas formas para hacer cosas asi puedes usar triggers, como
consejo te dire evita el sistema de reglas (por que no es Standard) a
menos que lo consideres la unica alternativa.

atentamente,
Jaime Casanova

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Tomas Eroles i Forner 2005-03-24 10:04:41 [Fwd: Re: Saludos]
Previous Message Jose Ayala - INCALPACA TPX 2005-03-23 23:42:22 Re: Varias cuestiones relacionadas con PostgreSQL