sql用外键创建表

时间:2014-03-21 14:54:41

标签: mysql sql

在我的数据库中,我需要创建一个有两个外键的表,虽然我试过,但我无法弄清楚错误的来源。任何正文帮我解决了这个问题。 我给创建表的mysql命令

create table book_vegetable(
  id int NOT NULL AUTO_INCREMENT,
  producer_offer_id int NOT NULL,
  consumer_id int NOT NULL,
  booked_qty varchar,
  PRIMARY KEY(id),
  FOREIGN KEY(producer_offer_id) 
    REFERENCES producer_offer(id),
  FOREIGN KEY(consumer_id) REFERENCES user(id)
);

我得到的错误

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近' PRIMARY KEY(id),FOREIGN KEY(producer_offer_id)REFERENCES   producer_offer(ID),FOR'在第1行

2 个答案:

答案 0 :(得分:2)

您的第一个问题是由于expected_qty varchar列上缺少长度规范引起的。

错误150的常见嫌疑人:

  • 主键与外键类型不匹配(例如int - bigint)。确保它们完全匹配
  • 不同的表引擎(例如,如果您尝试在InnoDB表中引用MyIsam表)

答案 1 :(得分:1)

这适用于MySQL,刚刚测试过(请注意,生产者提供和用户只是一个模拟表)。

create table producer_offer (id int(10) not null auto_increment, primary key(id));
create table user (id int(10) not null auto_increment, primary key(id));

create table book_vegetable (
    id int(10) NOT NULL AUTO_INCREMENT,
    producer_offer_id int(10) NOT NULL,
    consumer_id int(10) NOT NULL,
    booked_qty varchar(255),
    PRIMARY KEY(id),
    FOREIGN KEY(producer_offer_id) REFERENCES producer_offer(id),
    FOREIGN KEY(consumer_id) REFERENCES user(id)
);