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

Resetear Auto_Increment al finalizar año

Estas en el tema de Resetear Auto_Increment al finalizar año en el foro de Mysql en Foros del Web. Buenas a todos, Tenía una base de datos en Microsoft Access la cual pasé completamente a MySQL para poder trabajar con ella mejor en PHP. ...
  #1 (permalink)  
Antiguo 24/10/2011, 06:37
 
Fecha de Ingreso: julio-2011
Mensajes: 9
Antigüedad: 13 años, 5 meses
Puntos: 0
Resetear Auto_Increment al finalizar año

Buenas a todos,

Tenía una base de datos en Microsoft Access la cual pasé completamente a MySQL para poder trabajar con ella mejor en PHP.

La base de datos consta en resumen de salidas de productos.

La base de datos sería así:

Código MySQL:
Ver original
  1. CREATE TABLE `Salidas` (
  2.   `Ano` INTEGER NOT NULL,
  3.   `Destino` VARCHAR(50),
  4.   `Destinatario` VARCHAR(250) NOT NULL,
  5.   `TipoDocumento` VARCHAR(50),
  6.   `Contenido` VARCHAR(250)
  7.   `Archivo` VARCHAR(50) NOT NULL,
  8.   `Contespecifico` VARCHAR(250),
  9.   `Factura1` VARCHAR(250),
  10.   `Facturadata1` DATETIME,
  11.   `Tiposuministro` VARCHAR(50),
  12.   `Concurso` VARCHAR(250),
  13.   `Solicitudadministracionestado` VARCHAR(250),
  14.   `Notificacion` DATETIME,
  15.   PRIMARY KEY (`Saida`, `Ano`),
  16.   INDEX (`Ano`),
  17.   INDEX (`Salida`)

Pues bien, la base de datos genera un numero de salida nuevo cada vez que se introduce una nueva salida ( Campo Salida ), pero la base de datos en access estaba programada para que una vez se termine el año, el valor de Salida se ponga a 0.

Con un ejemplo se ve mejor:

Salida Num: 213
Año: 2010

Salida Num: 213
Año: 2009

Es decir, que puede haber varios números de salida, pero sólo se puede repetir ese número si es en años diferentes.

¿Cómo podría hacer que el valor de Salida se ponga a cero al acabar el año?, porque no doy con la solución.

Un saludo a todos!! y gracias de antemano

Última edición por Altomic; 24/10/2011 a las 06:44
  #2 (permalink)  
Antiguo 24/10/2011, 07:24
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 9 meses
Puntos: 574
Respuesta: Resetear Auto_Increment al finalizar año

La única forma es resetear el autoincrement con una query antes de entrar la primera salida del año....

Debes lanzar esta consulta antes de hacer el INSERT de la primera salida del año....

ALTER TABLE Salidas AUTO_INCREMENT = 1;


Como la PK es compuesta se puede hacer pero no me parece un gran diseño.

Sabes que si se borran salidas ese contador no será continuo... ni en mysql y ni en access...

Cuidado si por lo que sea te ves en la obligación de entrar salidas del año anterior cuando ya se haya entrado alguna del presente...


Ya se sabe que el 31/12 en contabilidad es el dia mas largo del año.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 24/10/2011 a las 07:33
  #3 (permalink)  
Antiguo 24/10/2011, 09:25
 
Fecha de Ingreso: julio-2011
Mensajes: 9
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Resetear Auto_Increment al finalizar año

O sea, que lo mejor sería que el valor del campo Salida, fuese un valor único no?
  #4 (permalink)  
Antiguo 24/10/2011, 10:26
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 9 meses
Puntos: 574
Respuesta: Resetear Auto_Increment al finalizar año

Si.

Puedes usar un autoinc como pk y programar algo que te mantenga un contador por años... pero siempre tendrás el problema de cuando se borre algo....

No conozco tu negocio pero Año+AutoincContinuo no puede servir de identificador minimamente amigable...??

Para saber el numero de salidas de un año lo puedes saber facilmente

SELECT year(Data), count(*) as NumSalidas FROM Salidas GROUP BY year(Data);
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 24/10/2011, 10:57
Avatar de 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
Puntos: 2658
Respuesta: Resetear Auto_Increment al finalizar año

Esa sería probablemente la pregunta central: ¿Por qué necesitas reiniciar la numeración todos los años? ¿Qué ventajas te da que no puedan lograrse con formas más ortodoxas de diseño de tablas?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: año, finalizar, php, resetear, sql, autoincrementable
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 06:25.