SQL Server - Solo para expertos

   
Vista:

Solo para expertos

Publicado por Thomas (1 intervención) el 30/03/2011 18:07:42
Saludos

Tengo una tablaX en la que se insertaran registros, de esta tablaX cada que se inserte un registro deberá alimentar a otra tablaY EN LÍNEA, he pensado en crear un trigger en la tablaX, sin embargo si ocurre un error de cualquier indole al alimentar a la tablaY, los datos introducidos en tablaX se deben conservar.

Alguna sugerencia?, recuerden, inserción en tablaX implica actualización de tablaY en línea, error de actualización en tablaY no deberá implicar el borrado de registro en tablaX.

De antemano gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

Solo para expertos

Publicado por Isaias (3180 intervenciones) el 30/03/2011 20:27:07
Limitas tu pregunta para "Expertos", aun si, no siendolo te voy a contestar

Cuando tu creas un TRIGGER en una tabla que hace referencia de inserccion en otra tabla, TODO esta en una TRANSACCION IMPLICITA, por tanto, si hubiera un "problema" en la inserccion de la segunda tabla (que lo dudo), habria un ROLLBACK IMPLICITO.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Solo para expertos

Publicado por Thomas (6 intervenciones) el 30/03/2011 23:09:13
Gracias Isaias por responder.

Yo se que existe un rollback implicito, y por lo mismo y adelantandome a los acontecimientos (una desconexión de red, una falla eléctrica, etc.), no quiero que ese rollback deshaga la inserción de registros en la tablaX y ahí mi problema, en la tablaY no importaría mucho, con un job podría solventar ese problema.

Alguna sugerencia Isaias?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

Solo para expertos

Publicado por Isaias (3180 intervenciones) el 31/03/2011 20:17:45
Bueno, dale una solucion total, no lo hagas mediante el trigger, codificalo en tu procedimiento que hace la primera inserccion y listo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Solo para expertos

Publicado por Thomas (6 intervenciones) el 31/03/2011 20:48:00
Gracias Isaias.

Pero tu respuesta no es válida.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

Solo para expertos

Publicado por Isaias (3180 intervenciones) el 01/04/2011 20:00:28
¿Cual es la razon por la cual afirmas que no es correcta?, Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de roger

Solo para expertos

Publicado por roger rogergomez780@hotmail.com (173 intervenciones) el 01/04/2011 02:14:17
ya probaste con Try catch ?? http://msdn.microsoft.com/en-us/library/ms175976.aspx
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Solo para expertos

Publicado por Thomas (6 intervenciones) el 01/04/2011 21:00:25
Una disculpa por no haber especificado la versión de sql server, es la 2000 y en esta no acepta los try catch, y ni con @@error se pueden cachar los errores, esto es recordemos en un trigger.

Pero bueno, supongamos que sea en una versión que acepte TRY CATCH, de que forma esto me ayudaría a realizar lo que quiero, les recuerdo:

Es actualizada una tablaX, la actualización de la misma no es problema mio, si es mi problema tomar los datos y actualizar una tablaY (EN LÍNEA, POR ESO EL TRIGGER colgado en la tablaX), pero si ocurre un error en el trigger, no quiero que deshaga los datos insertados en la tablaX (no es mi problema su actualización, pero tampoco debo deshacer lo realizado en ella).

Bueno, si tienen sugerencias son bienvenidas, recuerden, actualización de tablaY en línea con la tablaX.

Gracias de antemano.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar