Share via


IDENTITY (Fonction) (Transact-SQL)

S'utilise uniquement dans une instruction SELECT avec une clause INTO table pour insérer une colonne d'identité dans une nouvelle table. Bien qu'elles soient similaires, la fonction IDENTITY n'est pas identique à la propriété IDENTITY qui est utilisée avec CREATE TABLE et ALTER TABLE.

[!REMARQUE]

Pour créer un numéro à incrémentation automatique qui peut être utilisé dans plusieurs tables ou être appelé par des applications sans faire référence à une table, consultez Numéros de séquence.

Icône Lien de rubrique Conventions de la syntaxe Transact-SQL

Syntaxe

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

Arguments

  • data_type
    Type de données de la colonne d'identité. Tous les types de données de la catégorie de type entier (excepté le type bit) ou le type decimal sont valides pour une colonne d'identité.

  • seed
    Entier à affecter à la première ligne de la table. La valeur d'identité suivante est affectée à chaque ligne suivante. Cette valeur est égale à la dernière valeur IDENTITY augmentée de la valeur increment. Si vous ne spécifiez ni seed ni increment , les deux arguments reçoivent par défaut la valeur 1.

  • increment
    Entier à ajouter à la valeur seed pour les lignes successives de la table.

  • column_name
    Nom de la colonne qui doit être insérée dans la nouvelle table.

Types de retour

Renvoie le même type que data_type*.*

Notes

Étant donné que cette fonction crée une colonne dans une table, vous devez spécifier pour la colonne un nom figurant dans la liste de sélection de l'une des manières suivantes :

--(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;

--(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;

Exemples

L'exemple suivant insère toutes les lignes de la table Contact de la base de données AdventureWorks dans une nouvelle table appelée NewContact. La fonction IDENTITY est utilisée pour démarrer les numéros d'identification à 100 au lieu de 1 dans la table NewContact.

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

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

Voir aussi

Référence

CREATE TABLE (Transact-SQL)

@@IDENTITY (Transact-SQL)

IDENTITY (Propriété) (Transact-SQL)

SELECT @local\_variable (Transact-SQL)

DBCC CHECKIDENT (Transact-SQL)

sys.identity_columns (Transact-SQL)