sql >> Base de Datos >  >> RDS >> Sqlserver

Restablecer clave principal (int como identidad)

El valor máximo para un bigint es 9,223,372,036,854,775,807 . Si hubiera llegado a 8 dígitos en un día, aún necesitaría 10 días para alcanzar el máximo. Eso es como 25 millones de años.

Suponiendo que aún desea restablecer la columna, la primera pregunta que tengo es:¿es importante el orden de las filas? Es decir, ¿confía en el hecho de que la fila 1000 viene antes de la 1100 para, por ejemplo, un orden cronológico o absoluto? Si no, es fácil:elimine la columna y agréguela nuevamente. Listo, nuevos valores.

Si necesita mantener el orden, deberá hacerlo con un poco más de cuidado:

  1. Cerrar la mesa;
  2. Cambiar el tipo para que ya no se incremente automáticamente;
  3. Cree una nueva columna. Es mejor que no tenga índices por ahora, ya que actualizar el índice ralentizará las inserciones;
  4. Rellene los valores en el segundo con un bucle de algún tipo que incremente un contador (como el truco del número de filas de SQL Server) ordenando las inserciones para que coincidan con el orden original;
  5. Reemplace la columna anterior con la nueva;
  6. Restablecer el incremento automático y el estado de la clave principal.