2009-06-29 3 views
7

私は、テーブルの複合要素が一意であることを保証したいという状況に遭遇しました。たとえば:MySQLで化合物の一意性を強制する方法はありますか?

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

私は、彼らが頻繁に変更し、「ID」がシステム全体の基準として使用されるので、FIELDAとFIELDBは、複合主キーになりたくありません。

fieldAとfieldBは、それ自身では一意ではありませんが、それらの組み合わせは一意である必要があります。たとえば、{{1、Matt、Jones}、{2、David、Jones}、{3、Matt、Smith}}は有効なデータですが、{{1、Matt、Jones}、{2、Matt、Jones }}はできません。

答えて

7

は、あなたのテーブル定義にUNIQUEキーを追加します。

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

私は、ドキュメントをもう一度見て必要明らかに!ありがとうございました! –

11

次の2つのフィールドにUNIQUEキー制約を追加することができます。

ALTER TABLE `table_name` ADD UNIQUE (
`fieldA`, 
`fieldB` 
); 
1
ALTER Table ADD UNIQUE (fieldA, fieldB); 
関連する問題