Come posso ripristinare la colonna Identity in SQL Server?

Come posso ripristinare la colonna Identity in SQL Server?
In SQL Server, una colonna di identità si riferisce a una colonna che genera automaticamente i valori in base al valore del seme fornito e all'intervallo di incremento.

Questa guida ti insegnerà come ripristinare una colonna di identità in SQL Server, consentendo di ripristinare i valori non configurati in una colonna di identità.

SQL Server Identity

Per aggiungere una colonna di identità a una tabella in SQL Server, utilizzare la query di identità. La sintassi per la query di identità in SQL Server è mostrata:

Identity (seed_value, increment_interval);

La query di identità accetta due argomenti:

  1. Il seed_value si riferisce al valore del primo record nella tabella.
  2. increment_interval - si riferisce al valore aggiunto specifico al record precedente nella tabella.

Per impostazione predefinita, i valori di seme e incremento sono impostati su 1. Quindi, il primo record nella tabella ha un valore di 1 e ogni record aggiunto alla tabella, aggiunto da 1.

Ripristina la colonna Identity in SQL Server

Scopriamo ora come ripristinare una colonna di identità in SQL Server e perché potresti doverlo farlo.

Inizia creando una tabella di esempio e inserendo i dati come mostrato nelle query seguenti:

Crea l'inventario delle tabelle (
Id int primario Identity Key Identity (1,1) non null,
Product_Name Varchar (255),
Prezzo int,
quantità int
);
INSERIRE IN INVENTRIA (Product_Name, Price, Quantity) Valori
("Smart Watch", 110.99, 5),
("MacBook Pro", 2500.00, 10),
("Winter Coats", 657.95, 2),
("Office Desk", 800.20, 7),
("Saldatura", 56.10, 3),
("Telefono treppiede", 8.95, 8);

Ora possiamo interrogare i dati archiviati nella tabella come:

Seleziona * dall'inventario;

I record risultanti sono come mostrati:

Notare la colonna ID; Sebbene non abbiamo specificato i valori nella nostra istruzione Insert, la funzionalità di identità genera automaticamente il valore a partire da 1 e continua ad aumentare di un 1 per ogni record che inseriamo.

Perché ripristinare la colonna di identità?

È possibile chiedere se la colonna di identità contiene valori generati automaticamente in un ordine logico specificato, perché devo ripristinare la colonna di identità?

Guarda cosa succede ai dati quando eliminiamo un record dalla tabella:

Elimina dall'inventario dove quantità = 7;

La query di esempio sopra dovrebbe rimuovere un record in cui la quantità è uguale a 7.

La tabella ora contiene i record come:

Seleziona * dall'inventario;

Nelle colonne ID abbiamo i valori che iniziano da 1 a 6. Tuttavia, manca l'ID di 4. Questo accade quando lasciamo un record dal tavolo.

Per risolvere questo problema, dobbiamo ripristinare la colonna di identità.

Come ripristinare la colonna di identità

Per ripristinare la colonna Identity in SQL Server, utilizziamo la procedura DBCC checkIndent.

La sintassi della procedura è come:

DBCC checkident ('table_name', reseed, new_value);

Tuttavia, se ripristiniamo la colonna Identity e proviamo a inserire dati, SQL Server restituisce un errore. Per risolvere questo:

  • Crea una nuova tabella che agisce come il backup del vecchio tavolo.
  • Rimuovere i dati dalla vecchia tabella
  • Ripristina la colonna di identità
  • Ri-inserire i dati nella nuova tabella.

Una query di esempio che implementa i passaggi precedenti è come mostrato:

Seleziona * in New_Inventory dall'inventario;
Elimina dall'inventario;
DBCC CheckIent ('Inventory', reseed, 0);
Inserisci Inventory (Product_Name, Price, quantità) Selezionare Product_Name, Price, quantità dall'ordine new_Inventory per ID ASC;

Una volta eseguite correttamente le query, possiamo controllare i dati nella tabella dell'inventario come:

Seleziona * dall'inventario;

I record della tabella risultanti sono come mostrati:

Qui, la colonna ID è nell'ordine giusto.

Chiusura

Questa guida copre le basi della funzione di identità in SQL Server e come ripristinare una colonna di identità in caso di errori.