Incrémenter automatiquement la clé primaire dans les tables SQL
En utilisant L'interface graphique Sql Express Management Studio 2008 (pas avec le codage), Comment puis-je incrémenter automatiquement une clé primaire?
Laissez-moi vous expliquer: il y a une table qui contient une colonne nommée "id" et les éléments de cette colonne sont des clés primaires. Je veux rendre cette colonne auto-incrémentée, mais comment?
Santé
6 réponses
- on peut supposer que vous êtes dans la conception de la table. Si ce n'est pas le cas: cliquez avec le bouton droit sur le nom de la table - "Design".
- Cliquez sur la colonne requise.
- Dans "les propriétés de la Colonne" (en bas), faites défiler jusqu'à la "Spécification Identité" de la section, de la développer, puis bascule "(Identité)" sur "Oui".
Faites un clic droit sur la table dans SSMS, "concevez-la" et cliquez sur la colonne id. Dans les propriétés, définissez l'identité à ensemencer @ par exemple 1 et à incrémenter de 1-save et vous avez terminé.
Bien que ce qui suit ne soit pas une façon de le faire dans L'interface graphique, vous pouvez vous auto-incrémenter simplement en utilisant le type de données D'identité (start, increment):
CREATE TABLE "dbo"."TableName"
(
id int IDENTITY(1,1) PRIMARY KEY NOT NULL,
name varchar(20),
);
L'instruction insert doit lister toutes les colonnes sauf la colonne id (elle sera remplie avec une 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
Je N'ai pas Express Management Studio sur cette machine, donc je vais en fonction de la mémoire. Je pense que vous devez définir la colonne comme "identité", et il devrait y avoir un [+] sous Propriétés où vous pouvez développer, et définir auto-incrément à true.
Pour ceux qui ont le problème de ne pas vous laisser enregistrer une fois qu'il est modifié selon la réponse ci-dessous, procédez comme suit:
Outils - > options - > concepteurs - > concepteurs de tables et de bases de données - > décochez la case" Empêcher l'enregistrement des modifications nécessitant une recréation de table " - > OK
Et essayez d'enregistrer comme cela devrait fonctionner maintenant
Je pense qu'il y a un moyen de le faire au stade de la définition comme ceci
Créer un employé de table( id int identité, nom varchar(50), primary key(id) ).. J'essaie de voir s'il existe un moyen de modifier une table existante et de faire de la colonne une identité qui ne semble pas possible théoriquement (car les valeurs existantes pourraient nécessiter une modification)