none
Evitar salto de una columna autoincrementable o identity RRS feed

  • Pregunta

  • Hola muy buenos  dias todos......

    Tengo una aplicacion en c# y sqlserver 

    tengo una lista de registros que me aperecen ordenados por el campo identity asi:

    1  maria amila lopez

    2 luis carlos gomez gomez 

    3 laura maria salazar 

    4 andres camilo ortega  

    El problema es que cuando elimino un registro(3 laura maria salazar) y vuelvo a consultar la lista de datos me aparecen asi 

    1 maria amila lopez

    2 luis carlos gomez gomez 

    4 andres camilo ortega

    Quisiera saber si existe una forma de reordenar el index o volver a insertar el campo indentity en toda la tabla ya sea desde C# o sqlserver o tambien  si puede crear un columna numerica que se pueda reordenar o actualizar al borrar un registro

    Grasias por su ayuda


    viernes, 13 de abril de 2018 11:28

Todas las respuestas

  • Sí, se puede, pero será terriblemente ineficiente cuando la tabla sea grande. Piensa que cuando borres un registro habrá que cambiarles el número a TODOS los registros posteriores a ese, cosa que puede ser costosísima en una tabla grande.

    En su lugar te propongo una alternativa: Deja el ID en automático (por ejemplo, un Identity), aunque eso suponga que deja valores desocupados. Y cuando hagas la "Select", omite el campo ID y en su lugar genera un número consecutivo en la propia sentencia. Esto se puede hacer desde código cliente, o puedes usar el operador ROW_NUMBER si tienes un SQL Server reciente.

    viernes, 13 de abril de 2018 12:15
    Moderador