2017-03-18 9 views
0

"주문"테이블을 만들려고 할 때 "오류 코드 : 1215. 외래 키 제약 조건을 추가 할 수 없습니다"가 나타납니다.외래 키 제약 조건을 추가 할 수 없습니다. MySQL 워크 벤치

이 credit_cards 테이블 :

CREATE TABLE credit_cards (
    customer VARCHAR(30), 
    card_no CHAR(16), 
    PRIMARY KEY (customer, card_no), 
    FOREIGN KEY (customer) REFERENCES customers(username)); 

주문 테이블 :

CREATE TABLE orders (
    order_no INT AUTO_INCREMENT, 
    customer VARCHAR(30) NOT NULL, 
    date_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, 
    credit_card CHAR(16) NOT NULL, 
    PRIMARY KEY (order_no), 
    FOREIGN KEY (customer) 
     REFERENCES customers (username), 
    FOREIGN KEY (credit_card) 
     REFERENCES credit_cards (card_no)); 

SHOW ENGINE INNODB STATUS에서이 보고서는 문제가 아직도 수있는 해결 질문의 무리를 읽고 한 FOREIGN KEY (credit_card) REFERENCES credit_cards(card_no))

것을 말한다 그것을 이해하지 못한다. MySQL Workbench를 사용하고 있습니다. 감사.

+0

나는 확실하지 않다 있지만 기본 키에 있기 때문에 그 암시되지 않을 것 NOT NULL –

+0

@abdullah으로이 credit_cards 테이블에 고객 열을 만들려고? –

+0

네, 맞아. –

답변

0

모두 키를 기본 키 (또는 고유 키) 관계로 참조해야합니다. 내가 추천 :

CREATE TABLE credit_cards (
    credit_card_id int auto_increment primary key, 
    customer VARCHAR(30), 
    card_no CHAR(16), 
    UNIQUE KEY (customer, card_no), 
    FOREIGN KEY (customer) REFERENCES customers(username)); 
orders table: 

CREATE TABLE orders (
    order_no INT AUTO_INCREMENT, 
    customer VARCHAR(30) NOT NULL, 
    date_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, 
    credit_card_id int NOT NULL, 
    PRIMARY KEY (order_no), 
    FOREIGN KEY (customer) 
     REFERENCES customers (username), 
    FOREIGN KEY (credit_card_id) 
     REFERENCES credit_cards (credit_card_id)); 
+0

아 물론. ER 모델에서 테이블로 갈 때 나는 "username"을 두 번 사용했기 때문에 단계를 제대로 수행하지 못했을 것입니다. 감사. –