118 votes

Comment créer un tableau avec la colonne Identité

J'ai une table existante que je suis sur le point d'effacer parce que 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 écrit un "Create To..." 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, comment puis-je modifier ce SQL de sorte que ma table résultante ait la colonne ID définie comme Identité ?

165voto

Gratzy Points 4829
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]

36voto

Gordon Linoff Points 213350

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 compliqué est utile lorsque vous souhaitez modifier les options.

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

12voto

Phil Points 19299
[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

-3voto

Priyanka Points 1

Touche unique permettant d'obtenir 2 valeurs NULLES 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 string , 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 recevrez des erreurs comme :

Violation de la contrainte de CLÉ UNIQUE 'UQ__teppp __72E12F1B2E1BDC42'. Impossible d'insérer la clé dupliquée dans l'objet 'dbo.teppp'.
La déclaration a été résiliée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X