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

Come aggiungere identità alla colonna in SQL Server?

Non puoi aggiungi IDENTITY in una colonna esistente. Semplicemente non può essere fatto.

Dovrai creare un nuovo colonna di tipo INT IDENTITY e quindi rilascia la vecchia colonna che non ti serve più (ed eventualmente rinomina la nuova colonna con il vecchio nome, se necessario)

Inoltre:io non fallo nel visual designer:questo cercherà di ricreare la tabella con la nuova struttura, copiare tutti i dati (tutte le 10 milioni di righe), quindi elimina la vecchia tabella.

È molto più efficiente utilizzare istruzioni T-SQL semplici:questo eseguirà un aggiornamento "sul posto", non distruttivo (nessun dato viene perso) e non è necessario copiare circa 10 milioni di righe nel processo...

ALTER TABLE dbo.YourTable
  ADD NewID INT IDENTITY(1,1) NOT NULL

Quando aggiungi una nuova colonna di tipo INT IDENTITY alla tua tabella, verrà automaticamente popolata con numeri consecutivi. Non puoi impedire che ciò accada e non puoi nemmeno aggiornare i valori in un secondo momento.

Nessuna di queste opzioni è davvero molto utile, alla fine potresti ritrovarti con valori ID diversi.... per farlo bene, dovresti:

  • crea in anticipo la nuova tabella, con la struttura adeguata e l'IDENTITY già in atto
  • quindi attiva SET IDENTITY_INSERT (yourtable) ON su quella tabella per consentire l'inserimento di valori nella colonna identità
  • copia questi dati dalla fonte originale
  • Disattiva nuovamente l'inserimento dell'identità:SET IDENTITY_INSERT (yourtable) OFF

Solo con questo approccio sarai in grado di ottenere gli stessi ID in una colonna IDENTITY nella tua nuova tabella.