sql >> Database teknologi >  >> RDS >> Mysql

MySQL - Gør et værdipar unikt

Det kaldes en sammensat nøgle.

Hvis du vil ændre din faktiske PK til en sammensat, skal du bruge

Alter table <your table> drop PRIMARY KEY;
Alter table <your table> drop COLUMN <your autoincremented column>;

Alter table <your table> add [constraint <constraint name>] PRIMARY KEY (<col1>, <col2>);

Du kan også bare tilføje en unik begrænsning (din PK vil være den samme, og unikke par... skal være unikke).

alter table <your table> add [constraint <constraint name>] unique index(<col1>, <col2>);

Personligt vil jeg anbefale den anden løsning (simpel PK + unik begrænsning), men det er kun et personligt synspunkt. Du kan google efter fordele og ulemper argumenter om sammensatte nøgler.

Delen mellem [] er valgfri.

REDIGER

Hvis du vil gøre dette i opret tabelsætningen

For en sammensat pk

CREATE TABLE Test(
    id1 int NOT NULL, 
    id2 int NOT NULL,
    id3 int NOT NULL,
    PRIMARY KEY (id1, id2)
);

For et unikt indeks

CREATE TABLE Test1(
    id1 int NOT NULL AUTO_INCREMENT, 
    id2 int NOT NULL,
    id3 int NOT NULL,
    PRIMARY KEY (id1),
    UNIQUE KEY (id2, id3)
);


  1. Konverter fra Oracles RAW(16) til .NET's GUID

  2. Gemmer Oracle efterfølgende nuller for nummerdatatypen?

  3. Introduktion af ny funktion - Spotlight Cloud Reports

  4. Hvordan viser jeg det første bogstav som stort?