none
como cambiar el campo identidad al borrar un registro RRS feed

  • Pregunta

  • Explicación breve, enumero un campo key con una secuencia (uso esto pues si le ponía identidad, cuando la base de datos leía mal me saltaba del número 3 al 1000) al crear una secuencia como me dijo alberto poblacion el problema termino y va de 1 en 1

    pero ahora tengo este problema

    como ven borre datos como por ejemplo el registro 5 y tengo un salto del 4 al 6

    como hago para eliminar ese salto

    trato con una función "update" que diga lo siguiente genero un bucle while para lograr mi cometido y pongo en su interior esta sintaxis

    update Tabla_Administrador from id_Administrador = @i where id_administrador = @i

    pero no funciona, si me pueden decir como hago para que me permita sacar los saltos del campo identidad, gracias

    miércoles, 1 de junio de 2016 5:08

Respuestas

Todas las respuestas

  • Puedes hacerlo de dos maneras:

    1.- Modificar la propiedad IS IDENTITY a TRUE, IDENTITY INCREMENT en 1 y el IDENTITY SEED el número a partir del cual comenzará a hacer el autoincrementable, es decir si por ejemplo tu valor máximo que tiene en tu campo es de 589, a esta propiedad debes ponerle 590 para que el próximo registro en insertarse contenga el 590.

    2.- Solamente setear a TRUE la propiedad IS IDENTITY a TRUE y dejar las otras dos propiedades con 1 y 1, y después utilizar un 

    DBCC CHECKIDENT ( tuTabla, reseed, 589)

    En este caso, el número que pondrás será el valor máximo que tengas en tu campo...

    En este enlace tienes la solución:

    https://social.msdn.microsoft.com/Forums/es-ES/9151b863-e2f6-4963-8327-47b7258ff6b6/se-puede-cambiar-un-tipo-de-campo-numeric-a-tipo-de-campo-identity-?forum=sqlserveres

    Espero haberte ayudado...

    SALUDOS!


    • Editado PGF_MSDN miércoles, 1 de junio de 2016 7:31
    • Marcado como respuesta José De Alva jueves, 2 de junio de 2016 20:40
    miércoles, 1 de junio de 2016 7:27
  • Puedes presentar la definición de tu tabla, porque igual tambien podrias crear una columna que puedas regenerar a traves de una windows function como Row_Number, de esa forma podrias perfectamente manejar este escenario, porque es normal que tengas gaps o huecos, siempre en estos casos pregunto si REALMENTE necesitas ese orden continuo, esto te representa un requisito funcional o de negocios o es solo para ver los valores continuos.

    "Oh, the wind, the wind is blowing,through the graves the wind is blowing,Freedom soon will come; then well come from the shadows".The Partisan(Leonard Cohen) Email: me[at]geohernandez.net Blog:www.geohernandez.net

    miércoles, 1 de junio de 2016 8:16