179 votes

Comment puis-je créer une clé composite avec SQL Server Management Studio?

Comment puis-je créer une clé composite avec SQL Server Management Studio ?

Je veux que deux colonnes INT forment l'identité (unique) pour une table

375voto

Cory Points 3759

entrer la description de l'image ici

  1. Ouvrez l'onglet table de conception
  2. Sélectionnez vos deux champs INT (Ctrl / Shift + clic sur les blocs gris dans la toute première colonne)
  3. Clic droit -> Définir la clé primaire

5 votes

Pour mettre en surbrillance plusieurs champs, cliquez sur les blocs devant les colonnes "nom de la colonne" et "type de données", etc. Ctrl/Shift+Clic sur les champs des noms de colonne ne fera en réalité rien.

5 votes

Donc si l'un est une chaîne de caractères et l'autre est un entier, ce n'est pas possible ? Semble-t-il que non...

4 votes

Je voudrais voter négativement pour cela, mais ensuite j'ai réalisé que l'auteur a spécifiquement demandé comment le faire dans SSMS. Vous devriez toujours scripter les modifications de base de données + si vous utilisez des outils comme celui-ci, vous n'apprendrez jamais comment faire les modifications par vous-même

70voto

Roatin Marth Points 9532

Voici du code pour le faire:

-- Tableau d'exemple
create table myTable 
(
    Column1 int not null,
    Column2 int not null
)
GO

-- Ajouter une contrainte
ALTER TABLE myTable
    ADD CONSTRAINT pk_myConstraint PRIMARY KEY (Column1,Column2)
GO

J'ai ajouté la contrainte en tant que déclaration séparée car je présume que votre table a déjà été créée.

0 votes

Je suppose que cette réponse convient car vous pouvez exécuter ceci dans la fenêtre de requête de SSMS... ;)

3 votes

Scripting FTW, et pour un nommage explicite! Les définitions externes ADD PRIMARY KEY et internes PRIMARY KEY donneront des noms aléatoires aux clés, ce qui peut rendre difficile de savoir la correspondance si vous n'avez pas le diagramme de la base de données + les tables.

0 votes

Cela crée une contrainte non regroupée. Êtes-vous sûr de vouloir cela, étant donné que vous voulez aussi une clé composite?

45voto

yfeldblum Points 42613
créer table my_table (
    id_part1 int non nul,
    id_part2 int non nul,
    clé primaire (id_part1, id_part2)
)

18voto

Gratzy Points 4829

En mode design (clic droit sur la table, sélectionnez modifier), mettez en surbrillance les deux colonnes, faites un clic droit et choisissez "définir la clé primaire"

5voto

KM. Points 51800

Sélectionnez les deux lignes dans la vue de conception du tableau et cliquez sur l'icône de la clé, elles seront désormais une clé primaire composite.

Je ne suis pas sûr de votre question, mais seulement une colonne par tableau peut être une colonne IDENTITY, pas les deux.

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