593 votes

Incrémenter automatiquement la clé primaire dans SQL Server Management Studio 2012

Comment puis-je auto increment el primary key dans un SQL Server J'ai parcouru le forum mais je ne vois pas comment.

J'ai regardé les propriétés mais je ne vois pas d'option, j'ai vu une réponse où l'on va dans l'interface de l'entreprise. Identity et lui donner la valeur "yes", puis définir la propriété "specification". Identity increment à 1, mais cette section est grisée et je ne peux pas changer le non en oui.

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

6 votes

Est-ce que le type de données de la colonne clé est int ?

1 votes

@CoDe aDDict est actuellement défini comme char(10) mais je peux le changer car je suis juste en train de m'entraîner, merci.

897voto

Rab Nawaz Points 15322

Assurez-vous que le type de données de la colonne Key est int et ensuite régler l'identité manuellement, comme le montre l'image

enter image description here

Ou il suffit d'exécuter 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 sera exécuté, si ID n'est pas la seule colonne du tableau

référence image fifo's

29 votes

Juste une petite correction : Le site IDENTITY peut être appliquée à n'importe quel type de données numériques (il peut donc être tinyint , smallint , int , bigint , numeric , decimal ), la seule contrainte est qu'il ne peut pas représenter un nombre fractionnaire (il est donc ne peut pas être float o real ni l'un ni l'autre numeric o decimal avec une échelle non nulle ) et bien sûr, la spécification d'identité doit être compatible avec le type de données sélectionné.

4 votes

Cela fonctionne, à condition qu'il n'y ait pas de clés étrangères, etc.

4 votes

Je voulais juste ajouter que si vous avez déjà défini une valeur par défaut pour votre colonne d'identité, le champ (Is Identity) reste grisé. Supprimez la valeur par défaut, et elle redevient disponible.

271voto

Josien Points 1631

Lorsque vous créez la table, vous pouvez créer un fichier IDENTITY comme suit :

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

El IDENTITY permet d'incrémenter automatiquement la colonne à partir du numéro 1. (Notez que le type de données de la colonne doit être un nombre entier.) Si vous souhaitez ajouter cette propriété à une colonne existante, utilisez une propriété ALTER TABLE commandement.

Editar:
J'ai testé un peu, et je ne trouve pas de moyen de modifier les propriétés de l'identité via la fenêtre des propriétés des colonnes pour diverses tables. J'imagine que si vous voulez faire d'une colonne une colonne d'identité, vous DEVEZ utiliser une propriété ALTER TABLE commandement.

0 votes

Ah, c'est pour SQL Server 2008 r2 spécifiquement - peu importe.

3 votes

Cette syntaxe de création de table est bonne pratique selon les conseils de l'auteur de este poster dans les commentaires, en espérant que cela aidera quelqu'un.

103voto

gbn Points 197263

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

enter image description here

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

3 votes

El yes est grisé car il est char(10) (d'après le commentaire qui vient d'être publié)

0 votes

@Martin Smith oui, cela semble être le problème général, je vais changer cela et tester, merci beaucoup.

0 votes

En créant une nouvelle table, j'ai utilisé BookID int primary key identity Je n'ai pas spécifié à la fois l'ensemencement et l'incrémentation, est-ce une bonne pratique ? MSDN Si aucun des deux n'est spécifié, la valeur par défaut est (1,1) .

49voto

FIFO BIZSOL Points 241

Développez votre base de données, développez votre table, faites un clic droit sur votre table et sélectionnez design dans la liste déroulante. ITlooks like this

Va maintenant Propriétés des colonnes en dessous de celui-ci, faites défiler vers le bas et trouvez Spécification de l'identité développez-la et vous trouverez L'identité Faites-le Oui. Choisissez maintenant Incrément d'identité juste en dessous, donnez la valeur que vous voulez incrémenter. enter image description here

2 votes

Il me semble que c'est la bonne réponse, faire du type de données un int ne suffirait pas, n'est-ce pas ?

7voto

M.Schrecker Points 41

Lorsque vous utilisez Data Type : int, vous pouvez sélectionner la ligne que vous souhaitez voir s'auto-incrémenter et aller dans la balise des propriétés de la colonne. Là, vous pouvez définir l'identité sur 'yes'. La valeur de départ de l'auto-incrémentation peut également être modifiée à cet endroit. J'espère avoir pu vous aider ;)

0 votes

Où se trouvent les propriétés de la colonne ?

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