SQL - 无法添加外键约束

时间:2016-01-15 18:11:28

标签: sql innodb sqlfiddle

我是编写SQL代码的新手,我正在尝试运行一个简单的表创建,但是我无法找到编程中的错误,并且因为我是全新的,我正在努力创建这个。

这是我正在研究的学校项目,希望有人可以提供帮助。

我在SQLFiddle'中收到的错误是"无法添加外键约束"在以下代码中:

CREATE TABLE invoice(
  invoice_id INT NOT NULL,
  customer_id INT NOT NULL,
  order_date DATE NULL,
  spec_order_note VARCHAR(45) NULL,
  PRIMARY KEY(invoice_id, customer_id),
  FOREIGN KEY (customer_id)
  REFERENCES customer.customer_id
  ON DELETE CASCADE
  ON UPDATE CASCADE
);

CREATE TABLE line_item (
  invoice_id INT NOT NULL,
  donut_id INT NOT NULL,
  quantity INT NULL
  CONSTRAINT donut_invoice
  FOREIGN KEY invoice_id
  REFERENCES invoice.invoice_id
  ON DELETE RESTRICT
  ON UPDATE RESTRICT
)

CREATE TABLE donut (
  donut_id INT NOT NULL,
  donut_name VARCHAR(15) NULL,
  description VARCHAR(30) NULL,
  unit_price INT NULL
  PRIMARY KEY(donut_id),
)

CREATE TABLE customer (
  customer_id INT NOT NULL,
  last_name VARCHAR(15) NULL,
  first_name VARCHAR(10) NULL,
  street_add VARCHAR(20) NULL,
  apt_num INT NULL,
  city VARCHAR(20) NULL,
  state VARCHAR(15) NULL,
  zip_code INT NULL,
  home_phone VARCHAR(10) NULL,
  mobile_phone VARCHAR(10) NULL,
  other_phone VARCHAR(10) NULL,
  customer_notes VARCHAR(45) NULL
  PRIMARY KEY(customer_id),
)

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

您只能在外部约束中引用现有表和列。因此,如果要在customer的外键中引用invoice表,则需要在customer之前创建invoice或者使用{{1}另外添加外键约束}}

除此之外,您的代码中存在一些语法错误,例如缺少分号和错放(丢失和附加)逗号。

工作代码:

ALTER TABLE

http://sqlfiddle.com/#!9/36b044