Création et modification de colonnes d'identification

Mis à jour : 14 avril 2006

Vous ne pouvez créer qu'une colonne d'identification et une colonne GUID pour chaque table.

Propriété IDENTITY

Vous pouvez mettre en œuvre des colonnes d'identification à l'aide de la propriété IDENTITY. Ceci autorise le développeur à spécifier à la fois un numéro d'identité pour la première ligne insérée dans la table (propriété Identity Seed) et un incrément (propriété Identity Increment) à ajouter à la valeur de départ afin de déterminer les numéros d'identité suivants. Si vous insérez des valeurs dans une table dotée d'une colonne d'identification, moteur de base de données SQL Server 2005 génère automatiquement la valeur d'identité suivante en ajoutant l'incrément à la valeur de départ. Lorsque vous ajoutez des colonnes d'identification à des tables existantes, les numéros d'identité sont ajoutés aux lignes existantes de la table et les valeurs d'incrément et de départ sont appliquées en commençant par l'ordre selon lequel les lignes ont été ajoutées à l'origine. Les numéros d'identité sont également générés pour toutes les nouvelles lignes ajoutées. Vous ne pouvez pas modifier une colonne de table existante et y ajouter la propriété IDENTITY.

Lorsque vous utilisez la propriété IDENTITY pour définir une colonne d'identification, tenez compte des éléments suivants :

  • Une table ne peut comprendre qu'une colonne définie à l'aide de la propriété IDENTITY, et cette colonne doit être définie à l'aide d'un type de données decimal, int, numeric, smallint, bigint ou tinyint.
  • Vous pouvez spécifier la valeur de départ et l'incrément. La valeur par défaut est 1 dans les deux cas.
  • La colonne d'identification ne doit ni accepter les valeurs NULL, ni contenir une définition ou un objet DEFAULT.
  • La colonne peut être référencée dans une liste de sélection par l'emploi du mot clé $IDENTITY après la définition de la propriété IDENTITY. La colonne peut également être référencée par son nom.
  • Vous pouvez utiliser la fonction OBJECTPROPERTY pour déterminer si une table comporte une colonne IDENTITY et la fonction COLUMNPROPERTY pour définir le nom de la colonne IDENTITY.
  • SET IDENTITY_INSERT peut être utilisé pour désactiver la propriété IDENTITY d'une colonne en activant les valeurs à insérer explicitement.
    ms191131.note(fr-fr,SQL.90).gifRemarque :
    S'il existe une colonne d'identification pour une table qui est sujette à des suppressions fréquentes, des écarts peuvent survenir entre les valeurs d'identité. Les valeurs d'identité supprimées ne sont pas réutilisées. Pour éviter de tels écarts, n'utilisez pas la propriété IDENTITY. En lieu et place, vous pouvez créer un déclencheur qui détermine une nouvelle valeur d'identification, basée sur les valeurs existant dans la colonne d'identification, à mesure que des lignes sont insérées.

Identificateurs globaux uniques (GUID, Globally Unique Identifiers)

Bien que la propriété IDENTITY automatise la numérotation des lignes au sein d'une table, des tables distinctes (dont chacune avec sa propre colonne d'identification) peuvent générer les mêmes valeurs. En effet, la propriété IDENTITY est garantie comme étant unique seulement pour la table sur laquelle elle est utilisée. Si une application doit générer une colonne d'identification unique au sein de la base de données, ou de toutes les bases de données de tous les ordinateurs reliés en réseau à travers le monde, utilisez le type de données uniqueidentifier et la fonction NEWID (Transact-SQL) ou NEWSEQUENTIALID(). Le moteur de base de données ne génère pas automatiquement de valeurs pour la colonne. Pour insérer une valeur globale unique, créez une définition DEFAULT sur la colonne qui utilise la nouvelle fonction NEWID ou NEWSEQUENTIALID pour générer cette valeur.

La colonne peut être référencée dans une liste de sélection par l'emploi du mot clé $ROWGUID après la définition de la propriété ROWGUIDCOL (de même qu'une colonne IDENTITY peut être référencée à l'aide du mot clé $RIDENTITY). Une table ne peut comporter qu'une seule colonne ROWGUIDCOL, laquelle doit être définie avec le type de données uniqueidentifier.

Vous pouvez utiliser la fonction OBJECTPROPERTY (Transact-SQL) pour déterminer si une table comporte une colonne ROWGUIDCOL et la fonction COLUMNPROPERTY (Transact-SQL) pour définir le nom de la colonne ROWGUIDCOL.

L'exemple suivant crée une table avec une colonne uniqueidentifier en tant que clé primaire. Cet exemple utilise la fonction NEWSEQUENTIALID() de la contrainte DEFAULT afin de fournir des valeurs pour les nouvelles colonnes. La propriété ROWGUIDCOL est appliquée à la colonne uniqueidentifier de sorte qu'elle peut être référencée en utilisant la clé $ROWGUID.

CREATE TABLE dbo.Globally_Unique_Data
(guid uniqueidentifier CONSTRAINT Guid_Default DEFAULT NEWSEQUENTIALID() ROWGUIDCOL,
    Employee_Name varchar(60)
CONSTRAINT Guid_PK PRIMARY KEY (guid) );

Pour créer une nouvelle colonne d'identification lors de la création d'une table

CREATE TABLE (Transact-SQL)

Pour créer une nouvelle colonne d'identification sur une table existante

ALTER TABLE (Transact-SQL)

Pour supprimer une colonne d'identification

ALTER TABLE (Transact-SQL)

Procédure : supprimer des colonnes d'une table (Visual Database Tools)

Pour obtenir des informations sur les colonnes d'identité

sys.identity_columns (Transact-SQL)

Voir aussi

Concepts

Colonnes de numérotation automatique et d’identification
Utilisation des données uniqueidentifier

Autres ressources

COLUMNPROPERTY (Transact-SQL)
NEWID (Transact-SQL)
OBJECTPROPERTY (Transact-SQL)
uniqueidentifier (Transact-SQL)
Réplication de colonnes d'identité

Aide et Informations

Assistance sur SQL Server 2005

Historique des modifications

Version Historique

14 avril 2006

Contenu modifié :
  • Suppression du contenu relatif à l'utilisation de contraintes UNIQUE avec des colonnes ROWGUID.
  • Clarification de l'objectif d'utiliser la propriété ROWGUIDCOL.
Nouveau contenu :
  • Ajout de références relatives à l'utilisation de NEWSEQUENTIALID en plus de NEWID lors de la création d'une colonne GUID.
  • Ajout d'un exemple de création de table avec une colonne GUID.

5 décembre 2005

Nouveau contenu :
  • Informations supplémentaires sur l'ajout de colonnes d'identification à des tables existantes et confirmation de l'impossibilité d'ajouter la propriété IDENTITY à une colonne existante.