2016-09-23 6 views
1

내가 잘못하고있는 것은 무엇입니까? 작동하지 않는 sqlfiddle 에서이 테이블을 만들려고하면 테이블을 생성하기 위해 무엇mysql의 테이블에 외래 키를 추가하는 방법

Cannot add foreign key constraint 

create table product (
    pid int NOT NULL, 
    name varchar(10), 
    PRIMARY KEY (pid) 
); 

create table trans (
    tid int NOT NULL , 
    productId int NOT NULL, 
    userId int NOT NULL, 
    PRIMARY KEY (tid), 
    FOREIGN KEY (productId) REFERENCES product(pid), 
    FOREIGN KEY (userId) REFERENCES user1(uid) 
); 

create table user1 (
    uid int NOT NULL , 
    location varchar(22), 
    PRIMARY KEY (uid) 
); 
+0

외래 키에 의해 참조되기 전에'product'와'user1' 테이블을 생성해야합니다. 'trans' 테이블을 마지막 위치로 이동하십시오. –

답변

2

@BillKarwin가 언급 한 바와 같이, trans 테이블 전에 정의를 표시해야 trans 테이블에서 참조하는 기본 키를 포함하는 테이블에 대한 정의. 따라서 trans 테이블의 정의를 마지막으로 이동해야합니다. 심지어 SQLFiddle의 오류로 인해이 여전히 결과를하고

그러나 :

SQLFiddle (trans의 외래 키 참조의 주석)은

SQLFiddle이 수용에 문제의 일종을 갖고있는 것 같아요 테이블 스키마. 사이트에 자주 그런 문제가있는 것처럼 보이는 것은 당연합니다.

1

을 제공합니다. 먼저 product와 user1을 작성해야하고 마지막에는 trans을 작성해야합니다.

관련 문제