Triggers
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.
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.
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
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
Inma, si te llega, me lo mandas a mi porfis.
De todas maneras mandame lo que te dije y lo miro.
Un saludete
De todas maneras mandame lo que te dije y lo miro.
Un saludete
¿ 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 ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡
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 ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡
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!!
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!!
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..........
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..........
Facil.
Metete una minipimer por el culo y la dejas funcionando un par de horas.
Seguira mutando, pero tu culo estará a caldo.
Metete una minipimer por el culo y la dejas funcionando un par de horas.
Seguira mutando, pero tu culo estará a caldo.
Tu eres tonto o es que estas desesperao?
Pd: Por cierto, tengo ya la solución
Pd: Por cierto, tengo ya la solución
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.
Ah , y de paso te depilas los güevos con una cortadora de cesped.
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
Me da tela pero tela, tela de risa tus contentaciones,jajajajajajaj
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
Seguro que lo tienes bien trabajao
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 ¡ ¡ ¡ ¡ ¡ ¡ ¡
¿ 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 ¡ ¡ ¡ ¡ ¡ ¡ ¡