プロが教える店舗&オフィスのセキュリティ対策術

MySQLでDBを設計しているのですが、

テーブルを作成するさい、1つの列についてユニークな制約をつくる方法は分かるのですが、
2つの列について(仮に、fruit,countryとします)、

「fruit,country」の値がともに一致するような列は許さない、というようなユニークな制約は実現可能でしょうか?

つまり・・・・
fruit | country
-------------------
apple | japan
apple | uk
banana | japan
orange | uk
orange | china

上記は、fruit列だけを見ると、重複しているところがあり、
country列だけを見ると、重複しているところがありますが、

両方とも一致する行は存在しないのでOKです。


で、ここに、

fruitにapple, countryにukという値を入れようとすると、すでに、2行目に同じペアの行が存在するので、
エラーにしたいというわけです。


もし可能ならどうやってかけばいいのでしょうか?

どうぞよろしくお願いいたします。

A 回答 (1件)

create tableの構文は、以下の通り。



<create tableの構文>
create table 表名
(列名 データ型 列制約,
列名 データ型 列制約,
列名 データ型 列制約,
表制約)

つまり、単一列の制約でないものは、表の制約として定義します。これは、priamry keyなども同じです。

create table 表名
(列名1 int,
列名2 int,
fruit varchar(5),
country varchar(5),
unique(fruit,country))
    • good
    • 0
この回答へのお礼

お返事大変遅くなりまして失礼いたしました。

なるほど、そのものずばりなご回答、ありがとうございます。

参考にさせていただきます。

ありがとうございます。

お礼日時:2008/09/16 05:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す