2016-09-23 13 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でエラーにこのまだ結果やって:(transの外部キー参照のコメントを解除)

SQLFiddle

SQLFiddleはこれを受諾して、問題のいくつかの並べ替えを持っているようですテーブルスキーマ。サイトにはこのような問題が頻繁にあるように見えるため、これは驚くべきことではありません。

1

を与えます。最初にproductとuser1を作成し、最後にトランスを作成する必要があります。

関連する問題