Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/11/2017, 06:29
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 1 mes
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)