Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Evitar devoluciones de error en un TRIGGER

Estas en el tema de Evitar devoluciones de error en un TRIGGER en el foro de SQL Server en Foros del Web. Explico el problema: Un servicio que los responsables no quieren modificar realiza un INSERT en una tabla de mi base. Estos registros se duplican en ...
  #1 (permalink)  
Antiguo 15/11/2017, 06:29
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Evitar devoluciones de error en un TRIGGER

Explico el problema:
Un servicio que los responsables no quieren modificar realiza un INSERT en una tabla de mi base. Estos registros se duplican en ciertas condiciones y para evitarlo tengo tres soluciones:
1) Que ellos modifiquen la sintaxis de su inserción para evitarlas. NO lo van a hacer, y el acceso a datos que usan no es compatible con sintaxis propietarias de SQL Server que podrían resolverlo. Ya me dijeron que NO lo van a ahcer ellos.
2) Crear un indice UNIQUE en los campos fundamentales. Sería la solucion mas simple, pero eso dispararía un fallo de clave duplicada y ellos no tienen controladas las excepciones en su proceso, y ya me advirtieron que TAMPOCO lo van a modificar para eso.
3) Poner un TRIGGER que resuelva la situación, pero en estos casos para que funcione tengo que usar RISEERROR y devolver algo, que es justamente lo que tengo que evitar.

Tengo una posibilidad adicional, que es que invoquen un SP, algo que estoy negociando.

En definitiva, la pregunta es: ¿Es posible crear un trigger AFTER INSERT que valide si el registro ya existe, y en ese caso cancele el insert sin devolver error?

La idea es replicar lo que en otros DBMS es el resultado de un INSERT IGNORE...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #2 (permalink)  
Antiguo 15/11/2017, 08:47
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Evitar devoluciones de error en un TRIGGER

Tendrias que hacerlo por codigo, si haces un rollback dentro del trigger va a regresar un error, no existe en sql algo como insert ignore, creo que lo mejor seria que lo hicieras por un SP.
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 15/11/2017, 10:13
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Evitar devoluciones de error en un TRIGGER

Yep. Finalmente tuvimos que negociar cuando le expuse los problemas por la macana que ELLOS se habían mandado, así que procederemos por SP.
Todavía no entiendo cómo es que se les ocurre hacer un proceso que impacta en una BBDD y no hacen control de excepciones...
Hay gente que no debería programar sin un supervisor calificado.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 15/11/2017, 10:38
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Evitar devoluciones de error en un TRIGGER

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Yep. Finalmente tuvimos que negociar cuando le expuse los problemas por la macana que ELLOS se habían mandado, así que procederemos por SP.
Todavía no entiendo cómo es que se les ocurre hacer un proceso que impacta en una BBDD y no hacen control de excepciones...
Hay gente que no debería programar sin un supervisor calificado.
Asi es esto, tambien me ha tocado cada codigo que para que te cuento jejejejeje, que bueno que pudiste negociarlo
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: cada, registro, server, sql, trigger
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:22.