2009-06-29 16 views
7

Bir tablonun bileşik elemanının benzersiz olmasını sağlamak istediğim bir duruma girdim. Örneğin:Bileşik benzersizliğini MySQL'de nasıl uygularım?

Table (
    id char(36) primary key, 
    fieldA varChar(12) not null, 
    fieldB varChar(36) not null 
) 

Ben sık sık değişmesi ve 'kimlik' sistem boyunca bir referans olarak kullanılan bu yana fieldA ve Fieldb, bir bileşik birincil anahtar olmak istemiyoruz.

fieldA ve fieldB, kendileri için benzersiz değildir, ancak bunların kombinasyonlarının benzersiz olması gerekir. Örneğin, {{1, Matt, Jones}, {2, David, Jones}, {3, Matt, Smith}} geçerli veriler olabilir, ancak {{1, Matt, Jones}, {2, Matt, Jones }} olmaz.

cevap

7

tablo tanımına bir EŞSİZ anahtarı ekleyin:

Table (
    id char(36) primary key, 
    fieldA varChar(12) not null, 
    fieldB varChar(36) not null, 
    UNIQUE fieldA_fieldB (fieldA, fieldB) 
) 
+0

Sadece belgelerine bir daha bakmak gerekli, görünüşe göre! Teşekkür ederim! –

11

İki alan üzerinde EŞSİZ anahtar kısıtlamasını ekleyebilirsiniz:

ALTER TABLE `table_name` ADD UNIQUE (
`fieldA`, 
`fieldB` 
); 
1
ALTER Table ADD UNIQUE (fieldA, fieldB);