Condividi tramite


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.

Nota

Per creare un numero a incremento automatico da utilizzare in più tabelle o da chiamare dalle applicazioni senza fare riferimento ad alcuna tabella, vedere Numeri di sequenza.

Si applica a: SQL Server (da SQL Server 2008 a versione corrente).

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL

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 intero 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 intero 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 Contact del database AdventureWorks2012 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 AdventureWorks2012;
GO
IF OBJECT_ID (N'Person.NewContact', N'U') IS NOT NULL
    DROP TABLE Person.NewContact;
GO
ALTER DATABASE AdventureWorks2012 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 AdventureWorks2012 SET RECOVERY FULL;
GO
SELECT ContactNum, First, Last FROM Person.NewContact;
GO

Vedere anche

Riferimento

CREATE TABLE (SQL Server)

@@IDENTITY (Transact-SQL)

IDENTITY (proprietà) (Transact-SQL)

SELECT @local\_variable (Transact-SQL)

DBCC CHECKIDENT (Transact-SQL)

sys.identity_columns (Transact-SQL)