三个表连接在一起使用外键

时间:2013-03-04 01:14:30

标签: mysql

我有三张桌子

  1. order_table

    • ID
    • USER_NAME
    • foodid
    • drinkid
  2. 食品

    • foodid
    • 名称
    • drinkid
    • 名称
  3. 命令如下 创建order_table表----------------------------------------------- -

    create table order_table(
    id int not null auto_increment, 
    user_name varchar(26) not null, 
    foodid int(11) not null, 
    drinkid int(11) not null, 
    primary key(id), 
    FOREIGN KEY (foodid) REFERENCES food(foodid),
    FOREIGN KEY (drinkid) REFERENCES food(drinkid)
    )ENGINE=innodb;
    

    创建食物表-------------------------------------------- -----------

    create table food (
    foodid int(11) not null auto_increment, 
    name varchar(26) not null, 
    primary key(foodid)
    )ENGINE=innodb;
    

    创建饮料表-------------------------------------------- ----------

    create table drink (
    drinkid int(11) not null auto_increment, 
    name varchar(26) not null, 
    primary key(drinkid)
    )ENGINE=innodb;
    

    现在我遇到的问题是

    ERROR 1005 : Can't create table 't.order_table' (errno: 150)
    

    其中t是我的数据库名称 所以我能为这段代码做些什么,感谢每一个人。

1 个答案:

答案 0 :(得分:1)

有三个问题需要纠正。首先,FOREIGN KEY定义需要()围绕列名称,如下所示:

FOREIGN KEY (foodid) REFERENCES food (foodid),
/*---------^^^^^^^^^^----------------^^^^^^^^*/

其次,您的drinkid外键定义引用了错误的表food,而不是drink

FOREIGN KEY (drinkid) REFERENCES drink(drinkid)

最后,您必须重新排列表顺序,以便在引用的两个表之后创建 。把它们放在一起。然后它将正确执行,如本演示中所示:http://sqlfiddle.com/#!2/b3aee

order_table