Maison >base de données >tutoriel mysql >Une table SQL Server peut-elle avoir plus d'une colonne d'identité ?

Une table SQL Server peut-elle avoir plus d'une colonne d'identité ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-25 07:17:20697parcourir

Can a SQL Server Table Have More Than One Identity Column?

Une table SQL Server peut-elle avoir deux colonnes d'identité ?

De nombreux concepteurs de bases de données rencontrent le besoin d'avoir plusieurs colonnes dans une table qui s'auto- incrément, que ce soit pour la clé primaire ou à d'autres fins. Cependant, dans SQL Server, cela n'est pas directement possible. Selon la documentation de référence Transact-SQL :

Une seule colonne d'identité peut être créée par table.

Exemple :

Considérez l'instruction SQL suivante , qui tente de créer une table avec deux colonnes d'identité :

CREATE TABLE [dbo].[Foo](
    [FooId] [int] IDENTITY(1,1) NOT NULL,
    [BarId] [int] IDENTITY(1,1) NOT NULL
)

Cette instruction échouera avec ce qui suit erreur :

Msg 2744, Level 16, State 2, Line 1
Multiple identity columns specified for table 'Foo'. Only one identity column per table is allowed.

Solutions alternatives :

Si vous devez avoir plusieurs valeurs à incrémentation automatique dans un tableau, envisagez les solutions alternatives suivantes :

  • Clé primaire composite : Créez une clé primaire qui combine plusieurs colonnes en une seule et unique identifiant.
  • Colonne de non-identité : Créez une colonne de non-identité et incrémentez manuellement sa valeur à l'aide d'un déclencheur ou d'un autre mécanisme.
  • Tableau séparé : Créez une table séparée pour stocker les valeurs auto-incrémentées et référencez-la depuis votre table principale à l'aide d'un étranger key.

Bien que SQL Server ne prenne pas en charge nativement plusieurs colonnes d'identité, ces solutions alternatives peuvent fournir les fonctionnalités dont vous avez besoin.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn