2012-03-27 3 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가 orders (order_id)를 참조한다고 말하는 키에는 괜찮습니다. 그러나 테이블에서이 동일한 값은 자동 증가로 표시됩니다. 데이터베이스에 의해 생성됩니다.

당신의 ORDER_LINE 테이블에서 모두 AUTO_INCREMENT를 제거하고 당신이 MySQL을 당신에 (내가 추천하는) 기본 키로

1

당신의 ORDER_LINE 테이블에 AUTO_INCREMENT의 order_line_id 필드를 가질 수 있습니다 원하는 경우

괜찮을 것 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)