2012-03-27 191 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'外鍵?!? – 2012-03-27 18:38:19

回答

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

你不能自動增加密鑰。 看到你的這個例子是沒有意義的,你說的那個key是order_id引用的順序(order_id),這很好,但在表格上你說這個相同的值是自動遞增的,這意味着它會是由數據庫生成。

從ORDER_LINE表中刪除這兩個AUTO_INCREMENT,如果你願意,你可以對你的ORDER_LINE表AUTO_INCREMENT order_line_id字段作爲主鍵(我建議)

1

在MySQL中,你,你應該罰款

只能有一個AUTO_INCREMENT列,因此您無法將組合鍵定義爲AUTO_INCREMENT。你有沒有試過

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)