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

Come utilizzare la funzione IDENTITY() in SQL Server

In SQL Server puoi utilizzare IDENTITY() funzione per inserire una colonna di identità in una nuova tabella.

Tuttavia, questa funzione non deve essere confusa con IDENTITY() proprietà , che viene utilizzato con CREATE TABLE e ALTER TABLE dichiarazioni.

Il IDENTITY() funzione viene utilizzato solo in un SELECT istruzione con un INTO clausola tabellare. Quindi puoi usarlo quando trasferisci i dati da una tabella all'altra, ad esempio.

Sintassi

La sintassi è questa:

IDENTITY (data_type [ , seed , increment ] ) AS column_name

Il tipo_dati argomento specifica il tipo di dati della colonna identity. I tipi di dati validi sono tutti i tipi di dati della categoria dei tipi di dati interi, ad eccezione di bit e decimale .

Il seme è il valore utilizzato per la prima riga caricata nella tabella.

L'incremento è il valore incrementale che viene aggiunto al valore di identità della riga precedente che è stata caricata.

Il nome_colonna argomento fornisce il nome della colonna di identità che desideri creare.

Esempio 1 – Utilizzo di base

Ecco un esempio di codice di base.

SELECT 
  IDENTITY(int, 101, 10) AS pet_id,
  PetName AS pet_name
INTO BestFriends
FROM Pets;

Questo seleziona i dati da Animali domestici tabella e la inserisce in una nuova tabella denominata BestFriends . La prima colonna è una colonna di identità che creo con IDENTITY() funzione. In questo caso ho impostato il seme su 101 e l'incremento su 10. Chiamo quella colonna pet_id .

Chiamo la seconda colonna pet_name , e lo compilo dalla colonna denominata PetName .

Ecco cosa sono gli Animali domestici la tabella assomiglia a:

CREATE TABLE Pets (
    PetId int IDENTITY(1,1) PRIMARY KEY, 
    PetName varchar(255)
    );
INSERT INTO Pets (PetName)
VALUES ('Homer'), ('Felix'), ('Ruff');

SELECT * FROM Pet;

Risultato:

+---------+-----------+
| PetId   | PetName   |
|---------+-----------|
| 1       | Homer     |
| 2       | Felix     |
| 3       | Ruff      |
+---------+-----------+

Ed ecco cosa sono i BestFriends la tabella appare dopo il trasferimento dei dati:

SELECT * FROM BestFriends;

Risultato:

+----------+------------+
| pet_id   | pet_name   |
|----------+------------|
| 101      | Homer      |
| 111      | Felix      |
| 121      | Ruff       |
+----------+------------+

Quindi i nomi degli animali domestici rimangono gli stessi, ma la colonna dell'identità contiene valori diversi (perché ho usato IDENTITY(int, 101, 10) , rispetto a IDENTITY(1,1) per gli Animali domestici tabella).