IDENTITY (funzione) (Transact-SQL)
Viene utilizzata solo in istruzioni SELECT che includono una clausola INTO table per l'inserimento di una colonna Identity in una nuova tabella. Pur essendo simili, la funzione IDENTITY e la proprietà IDENTITY utilizzata con CREATE TABLE e ALTER TABLE non sono equivalenti.
Sintassi
IDENTITY (data_type [ , seed , increment ] ) AS column_name
Argomenti
data_type
Tipo di dati della colonna Identity. I tipi di dati validi per una colonna Identity sono tutti i tipi di dati della categoria integer, con l'eccezione di bit e decimal.seed
Valore integer da assegnare alla prima riga della tabella. A ogni riga successiva viene assegnato il valore Identity successivo, che corrisponde all'ultimo valore IDENTITY più il valore increment. Se vengono omessi sia seed che increment , verrà utilizzato il valore predefinito 1 per entrambi.increment
Valore integer da aggiungere al valore seed per le righe successive della tabella.column_name
Nome della colonna da inserire nella nuova tabella.
Tipi restituiti
Restituisce lo stesso tipo dell'argomento data_type*.*
Osservazioni
Poiché questa funzione crea una colonna in una tabella, nell'elenco di selezione è necessario specificare un nome per la colonna in uno dei modi seguenti:
--(1)
SELECT IDENTITY(int, 1,1) AS ID_Num
INTO NewTable
FROM OldTable;
--(2)
SELECT ID_Num = IDENTITY(int, 1, 1)
INTO NewTable
FROM OldTable;
Esempi
Nell'esempio seguente vengono inserite tutte le righe della tabella Person del database AdventureWorks2008R2 in una nuova tabella denominata NewContact. La funzione IDENTITY viene utilizzata per assegnare i numeri di identificazione nella tabella NewContact a partire da 100 anziché da 1.
USE AdventureWorks2008R2;
GO
IF OBJECT_ID (N'Person.NewContact', N'U') IS NOT NULL
DROP TABLE Person.NewContact;
GO
ALTER DATABASE AdventureWorks2008R2 SET RECOVERY BULK_LOGGED;
GO
SELECT IDENTITY(smallint, 100, 1) AS ContactNum,
FirstName AS First,
LastName AS Last
INTO Person.NewContact
FROM Person.Person;
GO
ALTER DATABASE AdventureWorks2008R2 SET RECOVERY FULL;
GO
SELECT ContactNum, First, Last FROM Person.NewContact;
GO