16 de octubre de 2016

Id consecutivo de tipo char a varchar

Buenas amigos, en este primer post estaremos hablando de un caso curioso que me encontré hace algún tiempo en mi trabajo. Se trata de una tabla con Id consecutivo de tipo carácter (char o varchar).

Para reproducir el caso crearemos una tabla sencilla como ejemplo. Como pueden ver la llave primaria es de tipo varchar, y va a tener valores numéricos consecutivos.

CREATE TABLE cliente
(
idcliente VARCHAR(2) NOT NULL,
nombre VARCHAR(50),
primerAp VARCHAR(50),
PRIMARY KEY (idcliente)
)

Si se hace un SELECT a la tabla se puede ver que existen 10 elementos en ella






















El problema se genera a la hora de seleccionar el máximo valor e incrementarlo en uno para ingresar un nuevo elemento con este Id. 











Al ser un campo de tipo varchar el máximo valor es el 9 y no el 10, ya que comienza con un carácter mayor. Cuando se incrementa en uno el resultado es 10 y al ingresar el nuevo elemento como es lógico nos indica que ya existe ese Id.
















Nuestra solución fue realizar la consulta haciendo una conversión a entero al campo Id.











Con esto ya devuelve el valor que se desea y ya no hay problema cuando se inserta un nuevo elemento a la tabla. Si se preguntan por qué alguien crearía una tabla con Id consecutivo de tipo carácter, pues yo me hice la misma pregunta, pero mi misión era darle solución al problema sin hacer cambios a la tabla y se logró con esta muy útil función CONVERT.

No hay comentarios:

Publicar un comentario