none
Reciclar los valores Identity SQL Server RRS feed

  • Pregunta

  • Foro, (esta pregunta la hice en el foro de asp.net y me mandaron para aca)

    Buen día, tengo una tabla en una BD, donde la primary key es la columna donde se almacena el Identity (1,1) que tiene autoincremento, pero los usuarios guardan y eliminan datos, es decir, si la table tiene 20 rows, y si elimino el row número 12, en cuanto se inserta otro row (con datos), el Identity toma el valor de 21... ya he probado:

    DBCC CHECKIDENT ('table', NORESEED)
    DBCC CHECKIDENT ('table', RESEED, 1)

    En una aplicacion en VB.NET, todo bien menos que se empalman los valores de 1, lo que busco es que, el nuevo row insertado (con datos) no tome el valor de 21, sino que se reclicle el valor del 12 que anteriormente se había eliminado, y así sucesivamente.

    Si me pudieran dar una guía, se los agradecería, en caso de que lo que busco se pueda. Saludos.

    viernes, 4 de julio de 2014 3:48

Respuestas

  • Un valor de identity de una fila eliminada ya no se vuelve a utilizar. Es así por diseño, y en mi opinión, buen diseño. Reutilizar valores de clave primaria de filas eliminadas no es una buena práctica. Por tanto deberías tener una buena razón para hacerlo. ¿Cuál es dicha razón?

    En cualquier caso las columnas IDENTITY no funcionan de la manera que describes. Si quieres ese comportamiento te lo vas a tener que implementar tú mismo.


    EntityLite: A Lightweight, Database First, Micro ORM

    domingo, 6 de julio de 2014 0:20

Todas las respuestas