- PR -

外部キー作成時の参照整合性

1
投稿者投稿内容
ax
常連さん
会議室デビュー日: 2004/04/07
投稿数: 34
お住まい・勤務地: 東京
投稿日時: 2004-11-17 09:56
以下のようなSQLでテーブル作成を行おうとしています。

create table table1 (
a text(10)
, b text(10)
, primary key (a, b)
);
create table table2 (
c text(10)
, d text(10)
, e text(15)
, primary key (c, d, e)
, foreign key (c) references table1(a)
, foreign key (d) references table1(b)
);


ここで、2つ目のSQLを実行した際にエラーとなるのですが、table1のフィールド"a"にuniqueなインデックを作成していないといけないのでしょうか?table1のフィールド"a"は、(a,b)の組ではユニークにしたいのですが、table1内で"a"単独では重複を許可したいのです。そうなると"a"にuniqueなインデックスを作成できないのでtable2の作成がエラーとなってしまいます。
確かに"a"、"b"単独ではユニークではありませんが、table2からは"a"も"b"も外部キーで参照するのでユニークになるかと思ったんですが・・

どのような作成方法にすればよいかアドバイスお願いします。
ゆいたん
ベテラン
会議室デビュー日: 2004/08/26
投稿数: 91
投稿日時: 2004-11-17 10:34
当方、Oracleですが、これだと目標を達成できませんか?

create table table1 (
a char(10)
, b char(10)
, primary key (a, b)
);

create table table2 (
c char(10)
, d char(10)
, e char(15)
, primary key (c, d, e)
, foreign key (c,d) references table1(a,b)
);
ax
常連さん
会議室デビュー日: 2004/04/07
投稿数: 34
お住まい・勤務地: 東京
投稿日時: 2004-11-17 14:30
どうもありがとうございます。
なんだか初心者の質問で申し訳ないですが、上記のSQLで作成できました。
1

スキルアップ/キャリアアップ(JOB@IT)