web-dev-qa-db-fra.com

Comment créer un tableau avec une colonne d'identité

J'ai une table existante que je suis sur le point de supprimer, car je ne l'ai pas créée avec la colonne ID définie comme étant la colonne Identity de la table.

En utilisant SQL Server Management Studio, j'ai écrit un script "Créer pour ..." de la table existante et j'ai obtenu ceci:

CREATE TABLE [dbo].[History](
    [ID] [int] NOT NULL,
    [RequestID] [int] NOT NULL,
    [EmployeeID] [varchar](50) NOT NULL,
    [DateStamp] [datetime] NOT NULL,
 CONSTRAINT [PK_History] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

Ma question est la suivante: comment modifier cette SQL de sorte que la table résultante ait la colonne ID définie comme Identity?

105
jp2code
CREATE TABLE [dbo].[History](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [RequestID] [int] NOT NULL,
    [EmployeeID] [varchar](50) NOT NULL,
    [DateStamp] [datetime] NOT NULL,
 CONSTRAINT [PK_History] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON)
) ON [PRIMARY]
149
Gratzy

Cela a déjà été répondu, mais je pense que la syntaxe la plus simple est:

CREATE TABLE History (
    ID int primary key IDENTITY(1,1) NOT NULL,
    . . .

L'index de contrainte plus complexe est utile lorsque vous souhaitez réellement modifier les options.

En passant, je préfère nommer une telle colonne HistoryId afin qu'elle corresponde aux noms des colonnes dans les relations de clé étrangère.

32
Gordon Linoff
[id] [int] IDENTITY(1,1) NOT NULL,

bien sûr, puisque vous créez la table dans SQL Server Management Studio, vous pouvez utiliser le concepteur de table pour définir la spécification d'identité.

enter image description here

11
Phil