2012-03-27 6 views
1

MYSQLのコンポジットキーを作成しようとしていますが、次のように試してみました。SQLコンポジットキーの構文

CREATE TABLE order_line(
order_id int NOT NULL AUTO_INCREMENT, 
car_id int NOT NULL AUTO_INCREMENT, 
PRIMARY KEY (order_id, car_id)); 

ALTER TABLE order_line ADD CONSTRAINT order_line_FK FOREIGN KEY (order_id) REFERENCES orders (order_id); 
ALTER TABLE order_line ADD CONSTRAINT order_line_FK2 FOREIGN KEY (car_id) REFERENCES car (car_id); 
+0

なぜあなたは '外部キーをauto_increment'でしょうか!? –

答えて

0

私はそれを好きにすることができました。

CREATE TABLE order_line (
order_id int NOT NULL, 
car_id int NOT NULL); 

ALTER TABLE order_line ADD CONSTRAINT order_line_PK PRIMARY KEY (order_id, car_id); 
ALTER TABLE order_line ADD CONSTRAINT order_line_FK FOREIGN KEY (order_id) REFERENCES orders (order_id); 
ALTER TABLE order_line ADD CONSTRAINT order_line_FK2 FOREIGN KEY (car_id) REFERENCES car (car_id); 
2

自動インクリメントキーがありません。 あなたのこの例を見れば分かりませんが、order_idがorder(order_id)を参照していると言っているキーは問題ありませんが、この同じ値が自動インクリメントであることを示す表では、データベースによって生成される。

MySQLでは、あなたがあなたのORDER_LINE表の両方からAUTO_INCREMENTを削除し、あなたは(私はお勧め)主キーとしてごORDER_LINEテーブルにAUTO_INCREMENTのorder_line_idフィールドを持つことができますしたい場合は、

問題ないはず

1

複合キーをAUTO_INCREMENTとして定義することはできませんので、AUTO_INCREMENT列を1つしか持てません。あなたはちょうど試しました

CREATE TABLE order_line(
    order_id int NOT NULL, 
    car_id int NOT NULL, 
PRIMARY KEY (order_id, car_id)); 
0

CONSTRAINT composite_key_name PRIMARY KEY (col1,col2)

関連する問題