SQL Fiddle - невозможно добавить ограничение внешнего ключа - PullRequest
0 голосов
/ 24 апреля 2018

У меня проблемы с построением схемы для моей таблицы salesorderslineitem.Даже когда я пытаюсь построить схему самостоятельно в скрипке.Я получаю сообщение об ошибке msg Невозможно добавить ограничение внешнего ключа ... Здесь мои таблицы вместе пытаются заставить работать новую таблицу salesorderslineitem.Спасибо всем!

CREATE TABLE salesorders
( donut_order_id             INT(10) NOT NULL AUTO_INCREMENT,
  customer_id                INT,
  date                       DATETIME,
  special_handling_note      TEXT,
  PRIMARY KEY (donut_order_id),
  FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);

INSERT INTO salesorders
 (donut_order_id,date,special_handling_note)

VALUES( 0000001,"2018-04-22","Please include plates and napkins");

CREATE TABLE salesorderslineitem
(
  donut_order_id     INT(10) NOT NULL, 
  donut_id           INT(10) NOT NULL,
  qty                INT(10) NOT NULL,
  PRIMARY KEY (donut_order_id, donut_id),
  FOREIGN KEY (donut_order_id) REFERENCES salesorders(donut_order_id),
  FOREIGN KEY (donut_id) REFERENCES donuts(donut_id)
 );

INSERT INTO salesorderslineitem
 (qty)

VALUES (10);

CREATE TABLE donuts
 (donut_id     INT(10) NOT NULL AUTO_INCREMENT,
  name         VARCHAR(30),
  description  VARCHAR(50),
  unit_price   DECIMAL(8,3),
  PRIMARY KEY (donut_id)
 );

INSERT INTO donuts
 (name,description,unit_price)

1 Ответ

0 голосов
/ 24 апреля 2018

Я исправил все ваши проблемы.

Вот рабочий SQLFiddle.http://sqlfiddle.com/#!9/5071d0

Первая проблема заключается в том, что не определили CREATE Statement для таблицы Customers и пытаются добавить FOREIGN KEY к этой несуществующей таблице в операторе CREATE TABLE salesorders вследующая строка

FOREIGN KEY (customer_id) REFERENCES customers(customer_id)

Чтобы это исправить, я написал раздел CREATE TABLE Customers перед оператором SalesOrders CREATE.

Это всего одна проблема.Вы также создаете таблицу SalesOrders перед таблицей Donuts и пытаетесь добавить ограничение FOREIGN KEY.

Наконец, у вас нет записи в таблице Donuts, поэтому я создалJelly Donut для вас:)

Код SQLFiddle, приведенный ниже для полноты.

CREATE TABLE customers ( 
  customer_id INT(10) NOT NULL AUTO_INCREMENT, 
  customer_name VARCHAR(100) NOT NULL,
  PRIMARY KEY (customer_id)
  );

CREATE TABLE donuts (
  donut_id INT(10) NOT NULL AUTO_INCREMENT, 
  name VARCHAR(30), 
  description VARCHAR(50), 
  unit_price DECIMAL(8,3), 
  PRIMARY KEY (donut_id) );

INSERT INTO donuts (donut_id,name,description,unit_price)  
VALUES (1,"Jelly Donut","Delicious Donut filled with Raspberry Jelly inside",1.99);

CREATE TABLE salesorders ( 
  donut_order_id INT(10) NOT NULL AUTO_INCREMENT, 
  customer_id INT, date DATETIME, 
  special_handling_note TEXT, 
  PRIMARY KEY (donut_order_id), 
  FOREIGN KEY (customer_id) REFERENCES customers(customer_id) );

INSERT INTO salesorders ( donut_order_id,date,special_handling_note )
VALUES( 0000001,"2018-04-22","Please include plates and napkins" );

CREATE TABLE salesorderslineitem ( 
  donut_order_id INT(10) NOT NULL, 
  donut_id INT(10) NOT NULL, qty INT(10) NOT NULL, 
  PRIMARY KEY (donut_order_id, donut_id),
  FOREIGN KEY (donut_order_id) 
  REFERENCES salesorders(donut_order_id), 
  FOREIGN KEY (donut_id) REFERENCES donuts(donut_id) );

INSERT INTO salesorderslineitem (donut_order_id,donut_id, qty) VALUES (0000001,1, 12);
...