2010-07-29 3 views
52

A l'aide de l'interface utilisateur graphique de Sql Express Management Studio 2008 (sans codage), comment puis-je incrémenter automatiquement une clé primaire? Permettez-moi d'expliquer: il y a une table qui a une colonne nommée "id" et les éléments de cette colonne sont définis comme des clés primaires. Je veux que cette colonne soit auto-incrémentée, mais comment?Clé primaire d'incrémentation automatique dans les tables SQL

Vive

+3

Bien sûr, vous ne devriez pas faire des changements à travers l'interface graphique. Vous devez écrire des scripts pour effectuer des tâches et mettre htem dans le contrôle de source, de sorte que vous puissiez facilement déployer les modifications de la base de données en production. L'interface graphique est un très mauvais outil à utiliser pour changer les tables, surtout quand elles deviennent grandes. – HLGEM

Répondre

93
  1. On peut supposer que vous êtes dans la conception de la table. Sinon: faites un clic droit sur le nom de la table - "Design".
  2. Cliquez sur la colonne requise.
  3. Dans "Propriétés de la colonne" (en bas), faites défiler jusqu'à la section "d'identité Spécification", développer, puis bascule "(Is Identity)" à "Oui".

enter image description here

10

Faites un clic droit sur la table SSMS, 'Design', et cliquez sur la colonne id. Dans les propriétés, définissez l'identité à ensemencer @ par ex. 1 et d'avoir incrément de 1 - enregistrer et vous avez terminé.

+0

"identity" et "" seed "d'identité" sont désactivés.Comment puis-je les activer? – samsam114

+0

Comme pour les autres réponses, vous devez marquer la colonne comme étant une colonne d'identité à l'avance - définir 'is identity' sur 'yes' –

6

Je n'ai pas Express Management Studio sur cette machine, donc je vais basé sur la mémoire. Je pense que vous devez définir la colonne comme "IDENTITY", et il devrait y avoir un [+] sous les propriétés où vous pouvez développer, et mettre l'auto-incrément à true.

4

pour ceux qui ont de la question de ce pas encore vous permettant de sauvegarder une fois modifiée en fonction de réponse ci-dessous, procédez comme suit:

Outils -> Options -> concepteurs -> Créateurs de table et base de données -> décocher « prévenons l'enregistrement des modifications qui nécessitent la recréation de table » boîte -> OK

et essayer de sauver comme il devrait fonctionner

0

Je pense qu'il ya une façon de le faire au stade de la définition comme celui-ci

créer une table employer ee ( id int identity, nom varchar (50), clé primaire (id) ) .. J'essaye de voir s'il y a un moyen de modifier une table existante et de rendre la colonne Identité qui ne semble pas possible théoriquement (car les valeurs existantes pourraient avoir besoin de modification)

9

Bien que ce ne soit pas le moyen de le faire dans l'interface graphique, mais vous pouvez obtenir l'auto-incrémentation en utilisant simplement le type de données d'identité (début, incrément):

CREATE TABLE "dbo"."TableName" 
(
    id int IDENTITY(1,1) PRIMARY KEY NOT NULL, 
    name varchar(20), 
); 

l'instruction d'insertion doit énumérer toutes les colonnes à l'exception de la colonne id (il sera rempli avec la valeur auto-incrémentée):

INSERT INTO "dbo"."TableName" (name) VALUES ('alpha'); 
INSERT INTO "dbo"."TableName" (name) VALUES ('beta'); 

et le résultat de

SELECT id, name FROM "dbo"."TableName"; 

sera

id name 
-------------------------- 
1  alpha 
2  beta 
Questions connexes