Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Reimposta chiave primaria (int come identità)

Il valore massimo per un bigint è 9,223,372,036,854,775,807 . Se fossi arrivato a 8 cifre in un giorno, avresti comunque bisogno di 10 giorni per raggiungere il massimo. Sono tipo 25 milioni di anni.

Supponendo che tu voglia ancora ripristinare la colonna, la prima domanda che ho è:l'ordine delle righe è importante? Significa che ti affidi al fatto che la riga 1000 viene prima di 1100 per, ad esempio, un ordinamento cronologico o altrimenti assoluto? In caso contrario, è facile:elimina la colonna e aggiungila di nuovo. Ehi presto, nuovi valori.

Se devi mantenere l'ordine dovrai farlo un po' più attentamente:

  1. Blocca il tavolo;
  2. Cambia il tipo in modo che non sia più l'incremento automatico;
  3. Crea una nuova colonna. È meglio che non abbia indici per ora poiché l'aggiornamento dell'indice rallenterà gli inserti;
  4. Popolare i valori nel secondo con un ciclo di qualche tipo che incrementa un contatore (come il trucco del numero di riga di SQL Server) ordinando gli inserti in modo che corrispondano all'ordine originale;
  5. Sostituisci la vecchia colonna con quella nuova;
  6. Ripristina l'incremento automatico e lo stato della chiave primaria.