Ver Mensaje Individual
  #3 (permalink)  
Antiguo 12/09/2012, 04:17
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: 16 años, 5 meses
Puntos: 2658
Respuesta: Error de "duplicate key" en inserción cuando no existe tal violación sql

Código MySQL:
Ver original
  1. IF ctrl_situalab THEN
  2.     INSERT INTO control_situalab (idempleado, fecha1, fecha2, codsitualab, codplnsuel, tipodoc)
  3.     VALUES (idemp, fecha_in, fecha_fn, 3, plnsuel, 'PLNSUEL');                
Efectivamente, es la única parte donde se puede producir.
Hay tres esscenarios poribles:
1) Si la variable idemp es NULL o contiene un valor que no exista en la tabla "empleados".
En otras palabras, un problema de datos. La única solución es verificar manualmente los datos de la tabla que origina ese valor, respecto de la tabla referida (empleados), para corroborar que no haya un dato ilegal en alguna parte.
Hazlo: revisalo.
No tienes idea de la cantidad de veces que nos han asegurado que estaba todo bien, y luego resultó que en realidad había un dato mal guardado de origen...

2) Si el campo idempleado es PK de esa tabla. Siendo PK es único, y si esa tabla se usa para contener información de diferentes momentos de un mismo empleado, hay un error de definición de tabla. La PK en ese caso debe ser de al menos dos campos.

3) El campo en cuestión es UNIQUE, cosa parecida a que sea PK. Tiene en esencia las mismas restricciones.

Por cierto: Hay algunos defectos formales no funcionales en algunas partes del SP (códigos superfluos o innecesarios).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 12/09/2012 a las 06:47