Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL - Buat sepasang nilai unik

Ini disebut kunci komposit.

Jika Anda ingin mengubah PK Anda yang sebenarnya menjadi PK komposit, gunakan

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

Anda juga dapat menambahkan batasan unik (PK Anda akan sama, dan pasangan unik... harus unik).

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

Secara pribadi, saya akan merekomendasikan solusi kedua (PK sederhana + batasan unik), tapi itu hanya sudut pandang pribadi. Anda dapat mencari argumen pro dan kontra di Google tentang kunci komposit.

Bagian antara [] bersifat opsional.

EDIT

Jika Anda ingin melakukan ini dalam pernyataan buat tabel

Untuk pk komposit

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

Untuk indeks unik

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. Kesalahan izin MySQL dengan 'memuat data'

  2. SQL:temukan baris dan urutkan berdasarkan jumlah kolom yang cocok?

  3. Kesalahan PHP (MySQL):Peringatan:mysql_num_rows() mengharapkan parameter 1 menjadi sumber daya

  4. PDO - Kesalahan fatal:Panggilan ke fungsi anggota fetch() pada non-objek

  5. Bagaimana cara menjadwalkan fungsi dinamis dengan cron job?