2017-03-07 26 views
1

これを実装する最良の方法は何ですか?2つの外部auto_incrementキーを別のテーブルの複合主キーとして使用していますか?

私は現在そうのような、テーブルを持っている:

CREATE TABLE table1 
(table1id INT NOT NULL AUTO_INCREMENT, 
PRIMARY KEY (table1id)); 

CREATE TABLE table2 
(table2id INT NOT NULL AUTO_INCREMENT, 
PRIMARY KEY (table2id)); 

CREATE TABLE table3 
(table1id INT NOT NULL AUTO_INCREMENT, 
table2id INT NOT NULL AUTO_INCREMENT, 
PRIMARY KEY (table1id, table2id)); 

しかし、私は2つの列の両方がAUTO_INCREMENTのカラムではないことを、エラーを取得しています。これを実装する最善の方法は何でしょうか。ここで、table3、table1idおよびtable2idは元のtable1およびtable2への外部キーですか?

答えて

1

table1idおよびtable2id,table3の列は、どれも自動インクリメントである必要はありません。実際、その値は他のテーブルの自動増分列によって決定されます。代わりに、ちょうどtable3ために、この定義を使用します。

CREATE TABLE table3 (
    table1id INT NOT NULL, 
    table2id INT NOT NULL, 
    PRIMARY KEY (table1id, table2id), 
    FOREIGN KEY (table1id) REFERENCES table1 (table1id), 
    FOREIGN KEY (table2id) REFERENCES table2 (table2id) 
); 

あなたtable3に自動インクリメント列を追加することができますが、table1idtable2idの組み合わせは、あなたが一意にできるようにする必要がありますので、あなたはおそらく、それを必要としませんこの表のすべてのレコードに対処してください。

関連する問題