web-dev-qa-db-fra.com

Incrémentation automatique de la clé primaire dans SQL Server Management Studio 2012

Comment puis-je auto increment le primary key dans une table de base de données SQL Server, j'ai parcouru le forum, mais je ne vois pas comment.

J'ai consulté les propriétés mais je ne vois pas d'option. J'ai vu une réponse qui vous permettait d'accéder à la propriété de spécification Identity et de la définir sur yes, puis de définir le Identity increment sur 1, mais la section est grisée et je ne peux pas changer le non en oui.

Il doit y avoir un moyen simple de faire cela mais je ne le trouve pas.

403
Ledgemonkey

Assurez-vous que le type de données de la colonne Key est int, puis définissez l'identité manuellement, comme le montre l'image

enter image description here

Ou lancez ce code

-- ID is the name of the  [to be] identity column
ALTER TABLE [yourTable] DROP COLUMN ID 
ALTER TABLE [yourTable] ADD ID INT IDENTITY(1,1)

le code s'exécutera si ID n'est pas la seule colonne de la table

référence de l'image de fifo

647
Raab

Lorsque vous créez la table, vous pouvez créer une colonne IDENTITY comme suit:

CREATE TABLE (
  ID_column INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
  ...
);

La propriété IDENTITY incrémentera automatiquement la colonne à partir du numéro 1. (Notez que le type de données de la colonne doit être un entier.) Si vous souhaitez ajouter cela à une colonne existante, utilisez un ALTER TABLE = commande.

Modifier:
Un peu testé, et je ne trouve pas le moyen de modifier les propriétés d’identité via la fenêtre Propriétés de la colonne pour différentes tables. Je suppose que si vous voulez transformer une colonne en une colonne d’identité, vous DEVEZ utiliser une commande ALTER TABLE.

164
Josien

Vous devez développer la section Identité pour exposer l'incrément et le germe.

enter image description here

Edit: J'ai supposé que vous auriez un type de données entier, pas char (10). Ce qui est raisonnable je dirais et valide quand j'ai posté cette réponse

84
gbn

Développez votre base de données, développez votre table, cliquez avec le bouton droit de la souris sur votre table et sélectionnez conception dans la liste déroulante. ITlooks like this

Maintenant, allez Propriétés de la colonne ci-dessous, faites défiler vers le bas et recherchez la spécification d'identité , développez-le et vous trouverez une identité , rendez-le Oui. Maintenant, choisissez Incrément d'identité juste en dessous, indiquez la valeur que vous souhaitez incrémenter. enter image description here

31
FIFO BIZSOL

Peut-être qu'il me manque quelque chose, mais pourquoi cela ne fonctionne-t-il pas avec l'objet SEQUENCE? N'est-ce pas ce que vous cherchez?

Exemple:

CREATE SCHEMA blah.
GO

CREATE SEQUENCE blah.blahsequence
START WITH 1
INCREMENT BY 1
NO CYCLE;

CREATE TABLE blah.de_blah_blah
(numbers bigint PRIMARY KEY NOT NULL
......etc

Lorsque vous référencez la séquence dans, dites une commande INSERT, utilisez simplement:

NEXT VALUE FOR blah.blahsequence

Plus d'informations et d'options pour SEQUENCE

7
Techie Joe

Lorsque vous utilisez Data Type: int, vous pouvez sélectionner la ligne à incrémenter automatiquement et accéder à la balise de propriétés de la colonne. Là, vous pouvez définir l'identité sur "oui". La valeur de départ pour l'auto-incrémentation peut également être modifiée ici. J'espère pouvoir aider;)

6
M.Schrecker

J'ai eu ce problème où j'avais déjà créé la table et que je ne pouvais pas le changer sans la laisser tomber, alors ce que j'ai fait est: cela, mais avait en SQL 2016)

Faites un clic droit sur la table dans l'explorateur d'objets:

Script Table as > DROP And CREATE To > New Query Editor Window

Ensuite, faites le montage du script dit par Josien; faites défiler vers le bas où se trouve le CREATE TABLE, trouvez votre clé primaire et ajoutez IDENTITY(1,1) à la fin avant la virgule. Script de lancement.

Les scripts DROP et CREATE m'ont aussi été utiles en raison de ce problème. (que le script généré gère.)

0
cheriejw