Wie erstelle ich mit SQL Server Management Studio einen zusammengesetzten Schlüssel?

163

Wie erstelle ich mit SQL Server Management Studio einen zusammengesetzten Schlüssel?

Ich möchte, dass zwei INT-Spalten die Identität (eindeutig) für eine Tabelle bilden

mrblah
quelle

Antworten:

356

Geben Sie hier die Bildbeschreibung ein

  1. Öffnen Sie die Registerkarte Designtabelle
  2. Markieren Sie Ihre beiden INT-Felder (Strg / Umschalt + Klicken Sie auf die grauen Blöcke in der ersten Spalte).
  3. Rechtsklick -> Primärschlüssel festlegen
Cory
quelle
4
Um mehrere Felder hervorzuheben, klicken Sie auf die Blöcke vor den Spalten "Spaltenname" und "Datentyp" und so weiter. Strg / Umschalt + Klicken Sie auf die Spaltennamenfelder, um nichts zu tun.
Pimgd
3
Wenn also einer ein String und der andere ein Int ist, ist das nicht möglich? Scheint nicht zu sein ...
B. Clay Shannon
3
Ich würde dies ablehnen, aber dann wurde mir klar, dass das OP speziell gefragt hat, wie es in SSMS gemacht werden soll. Sie sollten Datenbankänderungen immer
per Skript ausführen.
2
@JonnyLeeds das ist ein sehr hohes Pferd, auf dem du bist. Was ist los mit GUI, wenn die Leute das bevorzugen?
leinad13
4
@ leinad13 Ich muss einen schlechten Tag gehabt haben! Das Hauptproblem ist jedoch, dass sie nicht wiederholbar sind und im Allgemeinen unkontrollierte Ad-hoc-Änderungen und Optimierungen vornehmen, um Datenbank- / Schemaprobleme zu beheben. Das ist ein sehr schlechtes Zeichen - sie sind nicht dokumentiert (z. B. indem der zu korrigierende Code notiert und in die Versionskontrolle eingecheckt wird und / oder ein Tool vorhanden ist, das automatisch die richtigen Änderungen auf die Datenbankversion anwendet) und wenn Sie mehr als eine haben Installation dann sind Sie in ernsthaften Schwierigkeiten, sobald die Datenbanken nicht das gleiche Schema haben
JonnyRaa
63

Hier ist ein Code, um es zu tun:

-- 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

Ich habe die Einschränkung als separate Anweisung hinzugefügt, da ich davon ausgehe, dass Ihre Tabelle bereits erstellt wurde.

Roatin Marth
quelle
Ich denke, diese Antwort passt, da Sie diese im Abfragefenster von SSMS ausführen können ...;)
dance2die
2
Scripting FTW und zur expliziten Benennung! Die externen ADD PRIMARY KEYund internen PRIMARY KEYDefinitionen geben den Schlüsseln zufällige Namen, was es für den Bajingo zu einem Problem machen kann, herauszufinden, wo er hingehört, wenn Sie nicht über das DB-Diagramm + Tabellen verfügen.
Daevin
35
create table my_table (
    id_part1 int not null,
    id_part2 int not null,
    primary key (id_part1, id_part2)
)
Yfeldblum
quelle
14

Markieren Sie im Entwurfsmodus (Rechtsklick-Tabelle auswählen Ändern) beide Spalten mit der rechten Maustaste und wählen Sie Primärschlüssel festlegen

Gratzy
quelle
7

Öffnen Sie den Tabellen-Designer in SQL Server Management Studio (klicken Sie mit der rechten Maustaste auf die Tabelle und wählen Sie "Design").

Wenn Sie die Strg-Taste gedrückt halten, markieren Sie zwei oder mehr Spalten am linken Tabellenrand

Drücken Sie die kleine Taste in der Standardmenüleiste oben

Du bist fertig..

:-)

user4878037
quelle
5

Markieren Sie beide Zeilen in der Tabellenentwurfsansicht und klicken Sie auf das Schlüsselsymbol. Sie werden nun zu einem zusammengesetzten Primärschlüssel.

Ich bin mir Ihrer Frage nicht sicher, aber nur eine Spalte pro Tabelle kann eine IDENTITY-Spalte sein, nicht beide.

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


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