Triggers

inmadgm
31 de Mayo del 2005
Hola!!!
Estoy limitando una tabla pa que no pueda haber mas de 100 registros y pa ello he creado el siguiente trigger:

CREATE OR REPLACE TRIGGER t_centros
BEFORE
INSERT
ON centros
FOR EACH ROW
DECLARE

total_registro NUMBER;
num_max NUMBER:=99;

BEGIN
select count(*) INTO total_registro from centros where id_zona_gestion=:new.id_zona_gestion;

IF (total_registro>num_max)
THEN
raise_application_error(-20000, 'La tabla centro solo puede tener como máximo '||:num_max ||' registros por cada zona');

END IF;
END;
/

Se me crea perfectamente pero al insertar fila me dice que esta mutando, como puedo arreglarlo?

Muchas gracias, de antemano.

Joe Pecarr
31 de Mayo del 2005
El error se te produce (ORA-4091) porque t_centros realiza una consulta a su propia table de disparo, que es mutante.
Una tabla mutante es una tabla que esta siendo modificada por una instrucción DML.
Las instrucciones SQL en el cuerpo de un disparador nopueden, dentro de otras cosas, leer o modificar una table mutante de la instrucción de disparo, incluida la propia table de disparo.
La solución a este problema es crear dos disparadores, uno de nivel de fila y otro de nivel de instrucción. En el disparador a nivel de fila registra el valor de :new.id_zona_gestion, pero no consultes la tabla "centros", realiza la consulta en el disparador de nivel de instrucción y utiliza el valor registrado en el disparador de nivel de fila.
Una forma de registrar :new.id_zona_gestion es utilizar una tabla PL/SQL dentro de un paquete.

Si despues de esto no llegas yo te mando el código.

Saludos

inmadgm
31 de Mayo del 2005
Muchas gracias, Joe Pecarr.

inmadgm
31 de Mayo del 2005
Joe Pecarr, si no es mucha molestia mándamelo y muchas gracias!!!

jc3000
31 de Mayo del 2005
Inma, si te llega, me lo mandas a mi porfis.
De todas maneras mandame lo que te dije y lo miro.
Un saludete

inmadgm
31 de Mayo del 2005
jc3000, ya te lo mandé mira bien el correo.
Un saludo

Jor-El
31 de Mayo del 2005
¿ Un beso jc3000 ?
Ay ay ayyyyyyy, seguro que te zampa el coño, dile que deje algo pa mi, que hace tiempo que no huelo pesacadilla fresca.

Me meooooooooooooooooooooo ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡


lorea
31 de Mayo del 2005
Hola!

Creo que tu problema puede venir dado porque has declarado el disparador de tipo before, prueba a declararlo after y a ver si asi te funciona.

Suerte!!

inmadgm
31 de Mayo del 2005
Muchas gracias, me funcionó ¡ ¡ ¡ ¡ ¡ ¡ ¡
Me gustaria compensarte ¿ que te parece si me escribes un correo y charlamos sobre esto?
Por tu post, parece que eres una mujer ardiente. ¿ has hecho el amor con otra mujer ?
Si no lo has probado, podemos juntarnos un dia y lo hacemos. Me encantaria lamerte el conejito.
Espero tus noticias..........

Jor-El
31 de Mayo del 2005
Facil.
Metete una minipimer por el culo y la dejas funcionando un par de horas.
Seguira mutando, pero tu culo estará a caldo.

inmadgm
31 de Mayo del 2005
Tu eres tonto o es que estas desesperao?

Pd: Por cierto, tengo ya la solución

Jor-El
31 de Mayo del 2005
Si tienes la solución ponla ,cacho mamón, así si alguien tiene el mismo problema sabe como solucionarlo.

Ah , y de paso te depilas los güevos con una cortadora de cesped.

inmadgm
31 de Mayo del 2005
Pues en eso te equivocas, porque soy chica y las chicas como que no tienen webos,jajjajajajaja.
Me da tela pero tela, tela de risa tus contentaciones,jajajajajajaj


Jor-El
31 de Mayo del 2005
Pues entonces retiro lo de la mimipimer en el culo, quizás vendría bien en medio del coño.....
Seguro que lo tienes bien trabajao

jc3000
31 de Mayo del 2005
Oye tonto de los cojones ¡ ¡ ¡ ¡ ¡

¿ Por que no en vez de dar la murga, te cortas las venas y nos dejas en paz ?

Lastima de polvo que han desperdiciado tus padres ¡ ¡ ¡

IMBECIL ¡ ¡ ¡ ¡ ¡ ¡ ¡

inmadgm
31 de Mayo del 2005
No te preocupes, jc3000 .
No merece la pena seguir perdiendo el tiempo con alguien que no respeta a los demás.
Un beso jc3000, que eres el mejor!!!!