sql >> Database >  >> RDS >> Mysql

MySQL - Maak een paar waarden uniek

Het wordt een samengestelde sleutel genoemd.

Als u uw werkelijke PK wilt veranderen in een samengestelde, gebruik dan

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

Je kunt ook gewoon een unieke beperking toevoegen (je PK zal hetzelfde zijn, en unieke paren... zullen uniek moeten zijn).

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

Persoonlijk zou ik de tweede oplossing aanbevelen (eenvoudige PK + unieke beperking), maar dat is slechts een persoonlijk standpunt. U kunt googlen op voor- en nadelen van samengestelde sleutels.

Het gedeelte tussen [] zijn optioneel.

BEWERKEN

Als je dit wilt doen in de instructie Create Table

Voor een samengestelde pk

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

Voor een unieke 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. SQL ROWNUM hoe rijen tussen een specifiek bereik te retourneren

  2. Geselecteerde kolommen uit een CSV-bestand invoegen in een MySQL-database met behulp van LOAD DATA INFILE

  3. Af en toe SqlException krijgen:time-out is verlopen

  4. Invoegen in vanuit CTE