Comment créer une table avec une colonne d’identité

J’ai une table existante que je suis sur le sharepoint détruire car je ne l’ai pas créée avec la colonne ID définie pour être la colonne Identité de la table.

En utilisant SQL Server Management Studio , j’ai créé un script “Créer pour …” de la table existante et 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 puis-je modifier ce SQL pour que la table résultante ait la colonne ID définie comme identité ?

 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] 

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

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

L’indice de contrainte plus compliqué est utile lorsque vous souhaitez modifier les options.

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

 [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é.

entrer la description de l'image ici

La clé unique autorise 2 valeurs NULL maximum. Explication:

 create table teppp ( id int identity(1,1) primary key, name varchar(10 )unique, addresss varchar(10) ) insert into teppp ( name,addresss) values ('','address1') insert into teppp ( name,addresss) values ('NULL','address2') insert into teppp ( addresss) values ('address3') select * from teppp null ssortingng , address1 NULL,address2 NULL,address3 

Si vous essayez d’insérer les mêmes valeurs que ci-dessous:

 insert into teppp ( name,addresss) values ('','address4') insert into teppp ( name,addresss) values ('NULL','address5') insert into teppp ( addresss) values ('address6') 

Chaque fois que vous obtenez une erreur comme:

Violation de la contrainte UNIQUE KEY ‘UQ__teppp__72E12F1B2E1BDC42’. Impossible d’insérer une clé en double dans l’object ‘dbo.teppp’.
La déclaration a été terminée.