Ayuda con un cursor

31/05/2005 - 00:00 por mgs | Informe spam
Hola.. Pasa lo siguiente

Hice un cursor en el cual, dependiendo de ciertas opciones del registro
elimino o no un registro en otra tabla.. ok, el problema es que esa otra
tabla tiene un trigger para controlar otras opciones de la misma y si no se
cumplen pues sale el error.. el problema es que cuando elimino desde el
cursor, el trigger lógicamente se activa y me manda el error, y termina el
cursor.. cómo puedo hacer para que aún cuando el trigger envie el error el
cursor siga ejecutándose?

Gracias...

Preguntas similare

Leer las respuestas

#1 Maxi
31/05/2005 - 00:33 | Informe spam
Hola, primero, porque usar cursores? te paso un link donde explico los
motivos por los cuales no se deberian usar:

Ademas, si el trtigger dispara un error sera porque estas violando alguna
regla, o desactivas los triggers en cuestion o revisas que regla estas
corrompiendo.

http://www.configuracionesintegrale...p?articulo)5


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"mgs" escribió en el mensaje
news:
Hola.. Pasa lo siguiente

Hice un cursor en el cual, dependiendo de ciertas opciones del registro
elimino o no un registro en otra tabla.. ok, el problema es que esa otra
tabla tiene un trigger para controlar otras opciones de la misma y si no
se
cumplen pues sale el error.. el problema es que cuando elimino desde el
cursor, el trigger lógicamente se activa y me manda el error, y termina el
cursor.. cómo puedo hacer para que aún cuando el trigger envie el error el
cursor siga ejecutándose?

Gracias...


Respuesta Responder a este mensaje
#2 mgs
31/05/2005 - 01:01 | Informe spam
Es que fue la única forma que encontré para solucionar mi problema... que
era dependiendo de una valor realizar una operación diferente... El error
del trigger esta bien que lo tire, es solo que lo que quiero es que si lo
tira simplemente siga sin salirse
en resumen ¿No es posible evitar que el cursor se salga al encontrar un
error del trigger?



"Maxi" wrote in message
news:%
Hola, primero, porque usar cursores? te paso un link donde explico los
motivos por los cuales no se deberian usar:

Ademas, si el trtigger dispara un error sera porque estas violando alguna
regla, o desactivas los triggers en cuestion o revisas que regla estas
corrompiendo.

http://www.configuracionesintegrale...p?articulo)5


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"mgs" escribió en el mensaje
news:
> Hola.. Pasa lo siguiente
>
> Hice un cursor en el cual, dependiendo de ciertas opciones del registro
> elimino o no un registro en otra tabla.. ok, el problema es que esa otra
> tabla tiene un trigger para controlar otras opciones de la misma y si no
> se
> cumplen pues sale el error.. el problema es que cuando elimino desde el
> cursor, el trigger lógicamente se activa y me manda el error, y termina


el
> cursor.. cómo puedo hacer para que aún cuando el trigger envie el error


el
> cursor siga ejecutándose?
>
> Gracias...
>
>


Respuesta Responder a este mensaje
#3 qwalgrande
31/05/2005 - 01:21 | Informe spam
Hola.

Triggers y cursores, hay que ver...

No deberías usar cursores, penalizan el rendimiento y consumen más recursos
de los necesarios. En un altísimo porcentaje de los casos, puede programarse
lo mismo sin cursores, con importantes ganancias de rendimiento.

Y eso es lo que pasa cuando uno usa triggers, que los pones, te olvidas de
que están ahí y a la larga te los encuentras generando problemas (aunque
también solucionando otros, normalmente el problema que pretendían resolver
cuando se programaron).

Pero como tú no has escrito a este foro para que además te regañen, vamos a
ver cómo podemos ayudarte. Por otra parte, no te lo tomes a mal, y mis
disculpas si te he ofendido.

Dado que conoces o puedes conocer lo que hace el trigger, podrás evitar no
ya que falle (que por algo será, quizá integridad referencial, por ejemplo),
si no evitar que salte. Intenta aislar los registros que sabes que deberán
pasar por ese trigger y por tanto que sabes que van a darte error y dales un
tratamiento a medida. Puede ser tan sencillo como en lugar de lanzar un
delete, apuntarte que ese registro lo tienes que borrar (lanzas una
inserción a una tabla temporal de futuros borrados o le cambias el valor a
un campo de estado que haya en la tabla, por ejemplo), y ya los borraras más
adelante.

Mira también en los BOL la sintaxis de CONTINUE dentro de un bucle while. A
lo mejor encuentras ahí cómo salir del paso.

Suerte.

qwalgrande

"De lo que ves créete la mitad, de lo que no ves no te creas nada"
V. del V.


"mgs" escribió en el mensaje
news:
Hola.. Pasa lo siguiente

Hice un cursor en el cual, dependiendo de ciertas opciones del registro
elimino o no un registro en otra tabla.. ok, el problema es que esa otra
tabla tiene un trigger para controlar otras opciones de la misma y si no
se
cumplen pues sale el error.. el problema es que cuando elimino desde el
cursor, el trigger lógicamente se activa y me manda el error, y termina el
cursor.. cómo puedo hacer para que aún cuando el trigger envie el error el
cursor siga ejecutándose?

Gracias...


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida