web-dev-qa-db-fra.com

Comment ajouter une clé primaire auto_increment dans la base de données SQL Server?

J'ai mis en place une table qui n'a actuellement pas de clé primaire. Tout ce que j'ai à faire, c'est d'ajouter un primary key, no null, auto_increment.

Je travaille avec une base de données Microsoft SQL Server. Je comprends que cela ne peut pas être fait en une seule commande, mais chaque commande que j’essaie renvoie toujours des erreurs de syntaxe.

modifier ---------------

J'ai créé la clé primaire et l'ai même définie comme non nulle. Cependant, je ne peux pas configurer le auto_increment.

J'ai essayé:

ALTER TABLE tableName MODIFY id NVARCHAR(20) auto_increment
ALTER TABLE tableName ALTER COLUMN id NVARCHAR(20) auto_increment
ALTER TABLE tableName MODIFY id NVARCHAR(20) auto_increment
ALTER TABLE tableName ALTER COLUMN id NVARCHAR(20) auto_increment

J'utilise NVARCHAR parce que cela ne me permettait pas de définir NOT NULL sous int

54
dcp3450

Cela peut être fait en une seule commande. Vous devez définir la propriété IDENTITY pour "numéro automatique":

ALTER TABLE MyTable ADD mytableID int NOT NULL IDENTITY (1,1) PRIMARY KEY

Plus précisément, pour définir une contrainte de niveau de table nommée:

ALTER TABLE MyTable
   ADD MytableID int NOT NULL IDENTITY (1,1),
   CONSTRAINT PK_MyTable PRIMARY KEY CLUSTERED (MyTableID)

Voir ALTER TABLE et IDENTITY sur MSDN

111
gbn

Si la table contient déjà des données et que vous souhaitez modifier l'une des colonnes en identité:

Commencez par créer une nouvelle table comportant les mêmes colonnes et spécifiez la clé primaire-kolumn:

create table TempTable
(
    Id int not null identity(1, 1) primary key
    --, Other columns...
)

Copiez ensuite toutes les lignes de la table d'origine dans la nouvelle table à l'aide d'une instruction standard insert-.

Ensuite, déposez la table d'origine.

Et enfin, renommez TempTable comme vous voulez en utilisant sp_rename:

http://msdn.Microsoft.com/en-us/library/ms188351.aspx

21
Andreas Ågren

Vous pouvez également effectuer cette action via SQL Server Management Studio.

Faites un clic droit sur la table sélectionnée -> Modifier

Faites un clic droit sur le champ que vous souhaitez définir comme PK -> Définir la clé primaire

Sous Propriétés de la colonne, définissez "Spécification d'identité" sur Oui, puis spécifiez la valeur de départ et la valeur d'incrément.

Ensuite, si vous voulez pouvoir écrire simplement ce genre de chose, vous pouvez cliquer avec le bouton droit sur la table que vous venez de modifier et sélectionner

"SCRIPT TABLE AS" -> CRÉER VERS

afin que vous puissiez voir par vous-même la syntaxe correcte pour effectuer cette action.

13
ChrisCamp

Si vous avez la colonne, c'est très facile.

En utilisant le concepteur, vous pouvez définir la colonne comme une identité (1,1): clic droit sur la table → conception → en partie à gauche (clic droit) → propriétés → dans les colonnes d’identité, sélectionnez # colonne.


Propriétés :

enter image description here

Colonne d'identité :

enter image description here

1
gustavo herrera

Dans SQL Server 2008:

  • Clic droit sur la table
  • Aller à la conception
  • Sélectionnez le type de données numérique
  • Ajouter un nom à la nouvelle colonne
  • Définir la spécification d'identité sur 'OUI'
0
Chandan Deb