2017-11-11 35 views
0

複数の異なるテーブルに複数の外部キーを持つテーブルを作成したいと思っています。複数の外部キーを持つテーブルを作成する

#creating t1 
CREATE TABLE t1 
(ID   INT    AUTO_INCREMENT   primary key, 
x1   VARCHAR(50) 
); 

#Creating t2 
CREATE TABLE t2 
(v1  VARCHAR(50), 
v2  VARCHAR(50), 
primary key (v1, v2) 
); 

#creating attended table 
CREATE TABLE t3 
(ID  INT, 
v1   VARCHAR(50), 
v2   VARCHAR(50), 
primary key (ID, v1, v2), 
foreign key(v1)     references t2(v1), 
foreign key(v2)     references t2(v2), 
foreign key(ID)     references t1(ID) 
); 

上記は私のコードです。 t1とt2を作成するときにエラーは発生しません。私が作成しようとすると、しかし、私は次のコードを取得T3:

ERROR 1215(HY000):外部キーは他のテーブルの完全なキーで外部キー制約

答えて

0

を追加することはできません - あなたをFKとしてその半分を使うことはできません。

t2には、結合された主キーがあります。 t3でfkを参照するときには両方が必要です。

Why use multiple columns as primary keys (composite primary key)は複雑なFKを作成するにはを参照してください。SQL Server: adding foreign key on multiple columns を参照するか、またはMySQLのMultiple-column foreign key in MySQL?

+0

オーケー参照してください。だから私はこれをコード化しなければならないでしょうか? 外部キー(v1、v2)はt2(v1、v2)を参照します – billyl320

+0

編集:関連する2つのSO回答を追加しました。 –

+0

gotcha - ありがとう!コードが実行中です。 – billyl320

関連する問題