Trigger y cancelación de operación en curso.

25/07/2003 - 10:41 por AC | Informe spam
Buenos días,

Tengo una duda respecto a como cancelar la operación en curso en el trigger
que ha desencadenado.
Una forma creo sería RAISERROR que generaría un error, une mensaje para el
usuario y cancelaría la operación. ¿ Es correcto?
Si no se quiere ningún mensaje de error, ¿cómo se puede cancelar la
operación en curso dentro del trigger?

Gracias de antemano, y saludos.

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
25/07/2003 - 11:30 | Informe spam
No, para cancelar la operación necesitas hacer un ROLLBACK de la
transacción. Si no quieres que lance ningún mensaje de error pero que la
operación se cancele, simplemente no pongas ningún RAISERROR (pero el
ROLLBACK sí)



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro

(Guía de netiquette del foro)
http://www.helpdna.net/bosqlfaq00.htm
http://perso.wanadoo.es/rubenvigon/foro

(FAQ's de SQL Server)
http://support.microsoft.com/defaul.../70faq.asp
http://www.helpdna.net/bosqlfaq.htm

"AC" escribió en el mensaje
news:bfqqhd$cmh$
Buenos días,

Tengo una duda respecto a como cancelar la operación en curso en el


trigger
que ha desencadenado.
Una forma creo sería RAISERROR que generaría un error, une mensaje para el
usuario y cancelaría la operación. ¿ Es correcto?
Si no se quiere ningún mensaje de error, ¿cómo se puede cancelar la
operación en curso dentro del trigger?

Gracias de antemano, y saludos.


Respuesta Responder a este mensaje
#2 Miguel Egea
25/07/2003 - 11:40 | Informe spam
Hay que tener mucho cuidado con los triggers, y con las transacciones, te
pongo un ejemplo puedes ejecutarlo y verás cual es el comportamiento.


use tempdb
go
create table a (id int)
go
create trigger trg_a on a for insert,update,delete
as
begin
set nocount on
select id from inserted where id=2
if @@rowcount=0
begin
print 'solo permitimos insertar el número 2'
raiserror ('Esto es un error, pero naturalmente no para la
ejecución...',16,1)
print 'pero por aquí si paso'
print 'número de transacciones ' + cast(@@trancount as varchar)
rollback
print 'Paso aunque hay ejecutado rollback. número de
transacciones ' + cast(@@trancount as varchar)
print '¡OJO que estoy fuera de transacciones..!'
return
print 'por aquí no paso'
end
set nocount off
end
go
insert into a values(1)
go
insert into a values (2)
select * from a



Espero que te sirva.

Saludos
Miguel Egea
http://www.portalsql.com
Sql-Server MVP
"AC" escribió en el mensaje
news:bfqqhd$cmh$
Buenos días,

Tengo una duda respecto a como cancelar la operación en curso en el


trigger
que ha desencadenado.
Una forma creo sería RAISERROR que generaría un error, une mensaje para el
usuario y cancelaría la operación. ¿ Es correcto?
Si no se quiere ningún mensaje de error, ¿cómo se puede cancelar la
operación en curso dentro del trigger?

Gracias de antemano, y saludos.


Respuesta Responder a este mensaje
#3 Miguel Egea
25/07/2003 - 12:00 | Informe spam
¡Mucho cuidado con rollbacks dentro de triggers!

Espero que te sirva.

Saludos
Miguel Egea
http://www.portalsql.com
Sql-Server MVP
"Carlos Sacristan" <csacristanARROBAocasoPUNTOes> escribió en el mensaje
news:

No, para cancelar la operación necesitas hacer un ROLLBACK de la
transacción. Si no quieres que lance ningún mensaje de error pero que la
operación se cancele, simplemente no pongas ningún RAISERROR (pero el
ROLLBACK sí)



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro

(Guía de netiquette del foro)
http://www.helpdna.net/bosqlfaq00.htm
http://perso.wanadoo.es/rubenvigon/foro

(FAQ's de SQL Server)
http://support.microsoft.com/defaul.../70faq.asp
http://www.helpdna.net/bosqlfaq.htm

"AC" escribió en el mensaje
news:bfqqhd$cmh$
> Buenos días,
>
> Tengo una duda respecto a como cancelar la operación en curso en el
trigger
> que ha desencadenado.
> Una forma creo sería RAISERROR que generaría un error, une mensaje para


el
> usuario y cancelaría la operación. ¿ Es correcto?
> Si no se quiere ningún mensaje de error, ¿cómo se puede cancelar la
> operación en curso dentro del trigger?
>
> Gracias de antemano, y saludos.
>
>


Respuesta Responder a este mensaje
#4 Carlos Sacristan
25/07/2003 - 12:06 | Informe spam
Por supuesto que hay que tener cuidado con los ROLLBACK, Miguel, pero la
pregunta de nuestro amigo era más concreta que lo que le has contestado tú,
por eso he pensado que no hacía falta dar más explicaciones espero no
haberle llevado a confusión



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro

(Guía de netiquette del foro)
http://www.helpdna.net/bosqlfaq00.htm
http://perso.wanadoo.es/rubenvigon/foro

(FAQ's de SQL Server)
http://support.microsoft.com/defaul.../70faq.asp
http://www.helpdna.net/bosqlfaq.htm

"Miguel Egea" escribió en el mensaje
news:
¡Mucho cuidado con rollbacks dentro de triggers!

Espero que te sirva.

Saludos
Miguel Egea
http://www.portalsql.com
Sql-Server MVP
"Carlos Sacristan" <csacristanARROBAocasoPUNTOes> escribió en el mensaje
news:
>
> No, para cancelar la operación necesitas hacer un ROLLBACK de la
> transacción. Si no quieres que lance ningún mensaje de error pero que la
> operación se cancele, simplemente no pongas ningún RAISERROR (pero el
> ROLLBACK sí)
>
>
>
> Un saludo
>
> -
> "Sólo sé que no sé nada. " (Sócrates)
>
> Por favor, responder únicamente al foro
>
> (Guía de netiquette del foro)
> http://www.helpdna.net/bosqlfaq00.htm
> http://perso.wanadoo.es/rubenvigon/foro
>
> (FAQ's de SQL Server)
> http://support.microsoft.com/defaul.../70faq.asp
> http://www.helpdna.net/bosqlfaq.htm
>
> "AC" escribió en el mensaje
> news:bfqqhd$cmh$
> > Buenos días,
> >
> > Tengo una duda respecto a como cancelar la operación en curso en el
> trigger
> > que ha desencadenado.
> > Una forma creo sería RAISERROR que generaría un error, une mensaje


para
el
> > usuario y cancelaría la operación. ¿ Es correcto?
> > Si no se quiere ningún mensaje de error, ¿cómo se puede cancelar la
> > operación en curso dentro del trigger?
> >
> > Gracias de antemano, y saludos.
> >
> >
>
>


Respuesta Responder a este mensaje
#5 Carlos Sacristan
25/07/2003 - 12:18 | Informe spam
Bueeeeeeeeeeeeeeeeeeeeeno, stabieeeeeeeeeeeeeeeeeeeeen todo sea por
el bien de la salud ;-)



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro

(Guía de netiquette del foro)
http://www.helpdna.net/bosqlfaq00.htm
http://perso.wanadoo.es/rubenvigon/foro

(FAQ's de SQL Server)
http://support.microsoft.com/defaul.../70faq.asp
http://www.helpdna.net/bosqlfaq.htm

"Miguel Egea" escribió en el mensaje
news:
Bueno, por si acaso, la proxima cerveza la pagas tú :-d



Espero que te sirva.

Saludos
Miguel Egea
http://www.portalsql.com
Sql-Server MVP
"Carlos Sacristan" <csacristanARROBAocasoPUNTOes> escribió en el mensaje
news:
>
> Por supuesto que hay que tener cuidado con los ROLLBACK, Miguel,


pero
la
> pregunta de nuestro amigo era más concreta que lo que le has contestado
tú,
> por eso he pensado que no hacía falta dar más explicaciones espero


no
> haberle llevado a confusión
>
>
>
> Un saludo
>
> -
> "Sólo sé que no sé nada. " (Sócrates)
>
> Por favor, responder únicamente al foro
>
> (Guía de netiquette del foro)
> http://www.helpdna.net/bosqlfaq00.htm
> http://perso.wanadoo.es/rubenvigon/foro
>
> (FAQ's de SQL Server)
> http://support.microsoft.com/defaul.../70faq.asp
> http://www.helpdna.net/bosqlfaq.htm
>
> "Miguel Egea" escribió en el mensaje
> news:
> > ¡Mucho cuidado con rollbacks dentro de triggers!
> >
> > Espero que te sirva.
> >
> > Saludos
> > Miguel Egea
> > http://www.portalsql.com
> > Sql-Server MVP
> > "Carlos Sacristan" <csacristanARROBAocasoPUNTOes> escribió en el


mensaje
> > news:
> > >
> > > No, para cancelar la operación necesitas hacer un ROLLBACK de la
> > > transacción. Si no quieres que lance ningún mensaje de error pero


que
la
> > > operación se cancele, simplemente no pongas ningún RAISERROR (pero


el
> > > ROLLBACK sí)
> > >
> > >
> > >
> > > Un saludo
> > >
> > > -
> > > "Sólo sé que no sé nada. " (Sócrates)
> > >
> > > Por favor, responder únicamente al foro
> > >
> > > (Guía de netiquette del foro)
> > > http://www.helpdna.net/bosqlfaq00.htm
> > > http://perso.wanadoo.es/rubenvigon/foro
> > >
> > > (FAQ's de SQL Server)
> > >


http://support.microsoft.com/defaul.../70faq.asp
> > > http://www.helpdna.net/bosqlfaq.htm
> > >
> > > "AC" escribió en el mensaje
> > > news:bfqqhd$cmh$
> > > > Buenos días,
> > > >
> > > > Tengo una duda respecto a como cancelar la operación en curso en


el
> > > trigger
> > > > que ha desencadenado.
> > > > Una forma creo sería RAISERROR que generaría un error, une mensaje
> para
> > el
> > > > usuario y cancelaría la operación. ¿ Es correcto?
> > > > Si no se quiere ningún mensaje de error, ¿cómo se puede cancelar


la
> > > > operación en curso dentro del trigger?
> > > >
> > > > Gracias de antemano, y saludos.
> > > >
> > > >
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida