Potrebbe sembrare strano, ma T-SQL ha un IDENTITY()
proprietà e un IDENTITY()
funzione, ognuna delle quali ha uno scopo (simile, ma) diverso.
- Il
IDENTITY()
la proprietà crea una colonna di identità in una tabella. Una colonna di identità contiene un numero di identificazione a incremento automatico. Questa proprietà viene utilizzata conCREATE TABLE
eALTER TABLE
dichiarazioni. - Il
IDENTITY()
tuttavia, viene utilizzata solo in unSELECT
istruzione con unINTO
clausola table per inserire una colonna identity in una nuova tabella.
C'è anche SQL-DMO Identity
proprietà che espone la proprietà dell'identità di riga di una colonna, ma non lo tratterò qui. Microsoft consiglia di rimuovere questa proprietà in una versione futura di SQL Server e di evitare di utilizzarla in nuovi lavori di sviluppo.
Proprietà IDENTITY()
Ecco un esempio di utilizzo di IDENTITY()
proprietà.
CREATE TABLE Pets ( PetId int IDENTITY(1,1) PRIMARY KEY, PetName varchar(255) );
Questo codice crea una tabella con due colonne. La prima colonna (PetId
) è una colonna di identità (perché utilizzo IDENTITY()
proprietà nella sua definizione).
Ora che ho creato una colonna di identità, posso inserire nomi di animali domestici nel PetName
colonna senza dover includere un ID per ogni riga.
INSERT INTO Pets (PetName) VALUES ('Homer'), ('Felix'), ('Ruff'); SELECT * FROM Pet;
Risultato:
+---------+-----------+ | PetId | PetName | |---------+-----------| | 1 | Homer | | 2 | Felix | | 3 | Ruff | +---------+-----------+
In questo caso, la numerazione inizia da 1 e ogni riga aumenta di 1. Questo perché ho usato IDENTITY(1,1)
per specificare che il valore del seme è 1 e che viene incrementato di 1 ad ogni nuova riga.
IDENTITÀ()
Come accennato, il IDENTITY()
viene utilizzata in un SELECT INTO
dichiarazione. Ecco un esempio di utilizzo di IDENTITY()
funzione.
SELECT IDENTITY(int, 101, 10) AS pet_id, PetName AS pet_name INTO BestFriends FROM Pets; SELECT * FROM BestFriends;
Risultato:
+----------+------------+ | pet_id | pet_name | |----------+------------| | 101 | Homer | | 111 | Felix | | 121 | Ruff | +----------+------------+
Qui ho creato una tabella chiamata BestFriends
e l'ho popolato da Pets
tavolo.
In questo caso ho iniziato il conteggio a 101 e l'ho incrementato di 10. Si noti inoltre che la funzione richiede il primo argomento per specificare il tipo di dati della colonna.