sql >> Databasteknik >  >> RDS >> Mysql

MySQL - Gör ett par värden unika

Det kallas en sammansatt nyckel.

Om du vill ändra din faktiska PK till en sammansatt, använd

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 också bara lägga till en unik begränsning (din PK kommer att vara densamma, och unika par... måste vara unika).

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

Personligen skulle jag rekommendera den andra lösningen (enkel PK + unik begränsning), men det är bara en personlig synvinkel. Du kan googla efter argument för för- och nackdelar om sammansatta nycklar.

Delen mellan [] är valfria.

REDIGERA

Om du vill göra detta i skapa tabellsatsen

För en sammansatt pk

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

För ett unikt index

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. Hur man refererar till JSON-nycklar som innehåller specialtecken när man använder OPENJSON, JSON_QUERY och JSON_VALUE (SQL-server)

  2. Återställ en databas i SQL Server 2017

  3. CRUD-drift med ASP.NET Core MVC, Entity Framework Core och SQL Server

  4. Struts + Hibernate:@SessionTarget fungerar inte