comment créer une clé composite avec SQL Server Management Studio?

163

comment créer une clé composite avec SQL Server Management Studio?

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

mrblah
la source

Réponses:

356

entrez la description de l'image ici

  1. Ouvrez l'onglet de la table de conception
  2. Mettez en surbrillance 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
Cory
la source
4
Pour mettre en surbrillance plusieurs champs, cliquez sur les blocs devant les colonnes «nom de colonne» et «type de données» et autres. Ctrl / Shift + Cliquer sur les champs de nom de colonne ne fera rien.
Pimgd
3
Donc, si l'un est une chaîne et l'autre un int, ce n'est pas possible? Ne semble pas être ...
B. Clay Shannon
3
Je voterais contre cela, mais j'ai ensuite réalisé que l'OP demandait spécifiquement comment le faire dans SSMS. Vous devriez toujours écrire les changements de base de données + si vous utilisez des outils comme celui-ci, vous n'apprendrez jamais comment faire les changements par vous
JonnyRaa
2
@JonnyLeeds c'est un cheval très haut sur vous. Quel est le problème avec l'interface graphique si c'est ce que les gens préfèrent?
leinad13
4
@ leinad13 J'ai dû passer une mauvaise journée! Mais le problème majeur est qu'ils ne sont pas reproductibles et cela signifie généralement que les gens font des changements ad hoc incontrôlés et des ajustements pour résoudre les problèmes de base de données / schéma. C'est un très mauvais signe - ils ne sont pas documentés (par exemple en ayant le code à corriger écrit et archivé dans le contrôle de version et / ou en ayant un outil qui applique automatiquement les bons changements à quelle que soit la version de la base de données) et si vous en avez plus d'un l'installation alors vous avez de sérieux problèmes car bientôt les bases de données n'auront plus le même schéma
JonnyRaa
63

voici un code pour le faire:

-- Sample Table
create table myTable 
(
    Column1 int not null,
    Column2 int not null
)
GO

-- Add Constraint
ALTER TABLE myTable
    ADD CONSTRAINT pk_myConstraint PRIMARY KEY (Column1,Column2)
GO

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

Roatin Marth
la source
Je suppose que cette réponse convient puisque vous pouvez l'exécuter dans la fenêtre de requête de SSMS ...;)
dance2die
2
Scripting FTW, et pour la dénomination explicite! Les définitions externes ADD PRIMARY KEYet internes PRIMARY KEYdonneront des noms aléatoires aux clés, ce qui peut rendre difficile le bajingo de déterminer qui appartient où si vous n'avez pas le diagramme db + tables.
Daevin
35
create table my_table (
    id_part1 int not null,
    id_part2 int not null,
    primary key (id_part1, id_part2)
)
Yfeldblum
la source
14

En mode conception (clic droit sur le tableau, sélectionner modifier) ​​mettre en évidence les deux colonnes, cliquer avec le bouton droit et choisir définir la clé primaire

Gratzy
la source
7

Ouvrez le concepteur de table dans SQL Server Management Studio (cliquez avec le bouton droit sur la table et sélectionnez «Conception»)

En maintenant la touche Ctrl enfoncée, mettez en surbrillance deux colonnes ou plus dans la marge gauche du tableau

Appuyez sur la petite `` clé '' dans la barre de menu standard en haut

Vous avez terminé..

:-)

user4878037
la source
5

Mettez en surbrillance les deux lignes dans la vue de conception de table et cliquez sur l'icône de clé, elles seront désormais une clé primaire composite.

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

KM.
la source
4
create table myTable 
(
    Column1 int not null,
    Column2 int not null
)
GO


ALTER TABLE myTable
    ADD  PRIMARY KEY (Column1,Column2)
GO
Tejas
la source