Campo clave único para cada tabla

Buenas tardes,
Tengo una serie de tablas en las que genero un código compuesto de esta manera: "TEXTO" + AÑO + "NUMERO INCREMENTAL".
Ejemplo: AV20090000001
La función que lo realiza lo hace correctamente, obteniendo el mayor registro de la tabla, descomponiendo el número, sumándole 1 y volviendo a componer para obtener el siguiente registro.
Pensando un poco imagino que se puede dar la situación que haya más de un usuario intentando registrar al mismo tiempo datos, por lo que podría ocasionar que el mayor registro de una tabla sea el mismo devuelto para los usuarios y genera errores de MySQL.
Buscando encuentro una función "microtime()" y al parecer no se repite nunca el mismo valor (o es muy difícil que esto ocurra).
Y aquí mi pregunta:
¿Es un buen método usar microtime() para generar códigos únicos o por el contrario sería mejor poner el campo clave de las tablas como Incremental? Más que nada lo digo porque cuando requiera hacer una consulta y seleccionar los registros por el campo clave, ¿Cómo haría esto sino se exactamente el valor del campo clave?
Muchas gracias por anticipado.
Saludos.

1 respuesta

Respuesta
1
Yo usaría el método autoincremental de mysql, y armaría "a mano" el código con año.
Ok,
El hacerlo incremental, ¿supondría qué fuese el campo clave y tuviera otro campo más donde compusiera el código que yo quiero?
Teniendo en cuenta que al pasar de un año a otro, ese código debe empezar nuevamente por 1, ¿Sería un inconveniente el incremental?
Gracias
Si, sería un problema, si en el cambio de año hay que resetear el contador. Calculo que usar la función time() o microtime() es lo más viable en este caso, ya que te devuelve una id casi única.
Ok,
Entonces me decantaré por hacer un código obteniendo con la función microtime, pues será bastante difícil que ese valor se pueda repetir al mismo tiempo...
Agradezco su respuesta.
Gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas