Ver Mensaje Individual
  #3 (permalink)  
Antiguo 06/10/2014, 07:03
millhouse
 
Fecha de Ingreso: septiembre-2014
Ubicación: Colombia
Mensajes: 2
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: reiniciar autoincrement

Gracias gnzsoloyo por tu interés,... partiendo de tu respuesta logré darle solución a mi problema de la siguiente manera,...

Código MySQL:
Ver original
  1. -- paso las dos unicas varaible necesarias para generar el código
  2.  
  3. CREATE PROCEDURE add_numreferencia (a tinyint(1), b mediumint(2))
  4.  
  5. -- inserto estos datos en la tabla
  6.  
  7. INSERT INTO bdaa.NUM_REFERENCIAS (id_linea_numref, id_prenda_numref)
  8. VALUES (a,b);
  9.  
  10. -- hago la selección del último consecutivo
  11.  
  12. select id_cons_numref
  13. into @ultimoCons
  14. from NUM_REFERENCIAS
  15. where id_linea_numref = a
  16. and id_prenda_numref = b
  17. order by id_cons_numref desc
  18.  
  19. -- si el último consecutivo es igual a 999
  20. -- borro toda la serie para comenzar una nueva
  21.  
  22. if @ultimoCons = 999 then
  23.  
  24. delete from NUM_REFERENCIAS
  25. where id_linea_numref = a
  26. and id_prenda_numref = b
  27. and id_cons_numref is not null;
  28.  
  29. -- ahora inserto los datos concatenados iniciando desde 000
  30. SET @ref = concat(a,LPAD(b,2,'0'),LPAD(0,3,'0'));
  31.  
  32. UPDATE bdaa.NUM_REFERENCIAS
  33. set id_cons_numref=0,
  34. num_ref_numref = @ref
  35. where id_linea_numref = a
  36. and id_prenda_numref = b
  37. and id_cons_numref is null
  38.  
  39. -- /////////////////////////////////////////////////////////////
  40.  
  41. -- esta parte del procedimiento se da si la serie aun no tiene registros
  42.  
  43. if @ultimoCons is null then
  44.  
  45. SET @ref = concat(a,LPAD(b,2,'0'),LPAD(0,3,'0'));
  46.  
  47. UPDATE bdaa.NUM_REFERENCIAS
  48. set id_cons_numref=0,
  49. num_ref_numref = @ref
  50. where id_linea_numref = a
  51. and id_prenda_numref = b
  52. and id_cons_numref is null
  53.  
  54. -- ///////////////////////////////////////////////////////////////
  55.  
  56. -- esta parte del procedimiento se da si la serie ya tiene registros
  57.  
  58. if @ultimoCons is not null then
  59.  
  60. -- aumentamos el valor de último registro en 1
  61. SET @consecutivo = @ultimoCons+1;
  62.  
  63. -- concatenamos todos los datos
  64. SET @ref = concat(a,LPAD(b,2,'0'),LPAD(@consecutivo,3,'0'));
  65.  
  66. -- los insertamos en la tabla
  67. UPDATE bdaa.NUM_REFERENCIAS
  68. set id_cons_numref=@consecutivo,
  69. num_ref_numref = @ref
  70. where id_linea_numref = a
  71. and id_prenda_numref = b
  72. and id_cons_numref is null
  73.  
  74.  END IF;
  75. -- //////////////////////////////////////////////////////////////
  76.  

no se que tan eficiente sea mi código pero funciona para los efectos que planteaba en mi pregunta,... espero pueda ser de ayuda para alguien mas,... gracias!!!!