Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL - Spraw, aby para wartości była unikalna

Nazywa się to kluczem złożonym.

Jeśli chcesz zmienić swój aktualny PK na złożony, użyj

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

Możesz także po prostu dodać unikalne ograniczenie (Twoje PK będzie takie samo, a unikalne pary... będą musiały być unikalne).

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

Osobiście poleciłbym drugie rozwiązanie (proste PK + unikalne ograniczenie), ale to tylko osobisty punkt widzenia. Możesz wyszukiwać w Google argumenty za i przeciw dotyczące kluczy złożonych.

Część pomiędzy [] są opcjonalne.

EDYTUJ

Jeśli chcesz to zrobić w instrukcji tworzenia tabeli

Dla złożonego pk

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

Dla unikalnego indeksu

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy mogę przewidzieć, jak duży będzie mój indeks Zend Framework? (i kilka szybkich pytań)

  2. skrypt MYSQL do konwersji nazw kolumn na małe litery

  3. Jak uruchomić Google Cloud SQL tylko wtedy, gdy tego potrzebuję?

  4. Jak usunąć zduplikowaną wartość oddzieloną przecinkami w jednej kolumnie w MySQL?

  5. Odczytywanie ustawień podrzędnych, odczytywanie i zapisywanie ustawień głównych