2016-09-23 18 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

什么是为了创建表。您需要首先创建产品和用户1,并在最后 - 反式。