entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Como crear un "id" consecutivo con prefijo cadena?

Hola estimados,

Me podrían ayudar con la siguiente situación? Estoy creando una DB para un sistema tipo Help Desk, el problema es que he generado el campo "id" de tipo entero y AUTO_INCREMENT y ha funcionado bien, pero necesito que cada id se almacene con un prefijo que lo identifique de mejor manera, ejemplo: actualmente mis id son 0001, 0002, etc, y lo que necesito sería algo como MX-0001, MX-0002,etc.

Cualquier retroalimentación será bien recibida,

Saludos!
Keep coding!

4 Respuestas

6votos

Leonardo-Tadei Puntos227320

Hola @pauldevelop,

los campos autoincrementales son únicamente valores enteros: no podrás agregar el prefijo.

Sin embargo, aunque se pudiera, estarías normalizando mal la tabla, ya que la Primera Forma Normal dice que hay que almacenar un solo dato por campo, y vos estás planteando guardar 2 (el ID y el Identificador)

Lo que tenés que hacer es agregar otro campo en la tabla para contener el identificador de la entrada en el HelpDesk, y luego sensillamente mostrar ambos campos con el formato MX-0001, MX-0002,etc en las pantallas.

Incluso, hablando de normalización, deberías tener una tabla de Prefijos con su ID y su descripción (MX, etc) y en la tabla de consultas referenciar al tipo de consulta por su ID.

Happy hacking!

1voto

elias_leyton Puntos2260

Razón lo que dice Tadei, ahora si lo que quieres es forzar eso, lo que podrías hacer, seria una función trigger después de guardar que rellene un campo con ese rotulo. Se me ocurren un monto de formas, pero quizás esa de trigger en la BD sea la mas cómoda.

1voto

elporfirio Puntos2570

El camino largo consta de 3 cosas

  1. consultar la base de datos, para saber cual es la ultima ID que se registro.
  2. evaluar esa ID y sumarle 1
  3. guardar esa ID

En un sistema de poco tráfico no habria problema con este proceso. ya que lo haría al momento de guardar.

1voto

pedro_cabrera Puntos1130

Deberás tener otro campo indice p.ej. 'campo_mx' al que después de hacer el insert le asignes el valor mediante un update:

$campo= "MX-".mysql_insert_id();      // mysql_insert_id() es el último id insertado de forma autoincremental.

y luego...

update tabla set campo_mx = $campo WHERE id = mysql_insert_id();

Espero que te sirva.
Pedro

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta