-1

エラーが発生していたテーブルとは別のデータベースとテーブルを使用しましたが、それでもエラーは解決しません....

以下に 3 つのテーブルを示します。

表 a:

create table a(q int,w int,primary key(q,w));//IMPORTANT:q then w

q と w は複合主キーを形成します。

表 b:

create table b(e int,r int);

表 3:

create table c(t int,y int);

alter table b add foreign key(e) references a(q);
Query OK, 0 rows affected (0.16 sec)

この変更コマンドは、e をテーブル a の q への外部キー (「最初の」主キー) にします。

別の属性を 2 番目の主キー、つまり 'w' の外部キーとして作成しようとすると、エラー 1215 が表示されます。

alter table c add foreign key(t) references a(w);

エラー 1215 (HY000): 外部キー制約を追加できません

「t」を「SECOND」主キー、つまり「w」の外部キーとして使用しないのはなぜですか。「最初の主キー(q)の外部キーとしてそれらのいずれかを作成できますが、2番目の主キー(w)には作成できません」。

これは紛らわしいかもしれませんが、テーブル a の作成中に (q,w) を (w,q) に変更するだけですべてを削除して再度作成すると、他の人は w を参照できますが、a は参照できません。

create table a(q int,w int,primary key(w,q)); 
alter table c add foreign key(t) references a(w);
Query OK, 0 rows affected (0.16 sec)

alter table b add foreign key(e) references a(q);

エラー 1215 (HY000): 外部キー制約を追加できません

助けてください....私には丸一日かかりました..しかし、なぜそれが起こっているのかわかりませんでした...

4

2 に答える 2

-1

これは、oracle_express_11eg ソフトウェアを使用して、alter コマンドを使用して作成された外部キーのイメージです。ここで実際に行ったことは、test と students という 2 つのテーブルを作成したことです。テストID、名前などで構成されるテストテーブルと、ID、名前などで構成される学生テーブル。両方のテーブルで、コマンド「主キー(id)」を使用して主キーと名前が付けられ、「alter table test」コマンドを記述します,外部キー(id)を追加,学生(id)を参照;" 外部キーを作成するのは簡単ですよね?

于 2016-08-29T06:16:11.280 に答える