Cannot add foreign key constraint - MySQL

Узнай цену своей работы

Формулировка задачи:

Листинг программы
  1. CREATE TABLE salespeople
  2. (sid integer not null auto_increment,
  3. sname text not null,
  4. comm decimal(5,5),
  5. primary key (sid))
  6. engine = InnoDB Default charset = utf8;
Выдает ошибку - #1215 - Cannot add foreign key constraint В чем проблема ?

Решение задачи: «Cannot add foreign key constraint»

textual
Листинг программы
  1. CREATE TABLE salespeople
  2. (sid int not null auto_increment,
  3. sname text not null,
  4. comm decimal(5,5),
  5. primary key (sid))
  6. engine = InnoDB Default charset = utf8;
  7. INSERT INTO salespeople
  8. (sid, sname, comm) VALUES
  9. (1, "Ivan Jadov", "0.12"),
  10. (2, "Fedor Zahapov", "0.15"),
  11. (3, "Maxim Petrov", "0.14"),
  12. (4, "Alisa Tir", "0.12");
  13. CREATE TABLE categories
  14. (pcategory_id int not null auto_increment,
  15. pcname text not null,
  16. primary key (pcategory_id))
  17. engine = InnoDB Default charset = utf8;
  18. INSERT INTO categories
  19. (pcategory_id, pcname) VALUES
  20. (1, "Kettles"),
  21. (2, "Microwaves"),
  22. (3, "Televisions");
  23. CREATE TABLE products
  24. (pid int not null auto_increment,
  25. pbrand text,
  26. pcategory_id int,
  27. pname text,
  28. pquantity int,
  29. pcost decimal (15,2),
  30. primary key (pid),
  31. foreign key(pcategory_id) references categories(pcategory_id)
  32. ON UPDATE CASCADE)
  33. engine = InnoDB Default charset = utf8;
  34. INSERT INTO products
  35. (pid, pbrand, pcategory_id, pname, pquantity, pcost) VALUES
  36. (1, "Samsung", 1, "Exhaust", 3, "650.5"),
  37. (default, "Samsung", 1, "Fountain", 5, "790.0"),
  38. (default, "Black mesa", 2, "Black mesa-1", 7, "2200.0"),
  39. (default, "Black mesa", 3, "Emitter-3", 9, "9000.0");
  40. CREATE TABLE orders
  41. (oid int not null auto_increment,
  42. odate DATE,
  43. amt DECIMAL(15,2),
  44. pid int,
  45. sid int,
  46. primary key(oid),
  47. foreign key(pid) references products(pid)
  48. ON DELETE CASCADE ON UPDATE CASCADE,
  49. foreign key(sid) references salespeople(sid)
  50. ON DELETE CASCADE ON UPDATE CASCADE)
  51. engine = InnoDB Default charset = utf8;
  52. INSERT INTO orders
  53. (oid, odate, amt, pid, sid) VALUES
  54. (default, "2009-09-1", "650.5", 1, 1),
  55. (default, "2009-09-10", "790.0", 2, 2),
  56. (default, "2009-10-1", "2200.0", 3, 3),
  57. (default, "2009-11-15", "9000.0", 4, 1),
  58. (default, "2009-12-4", "650.5", 1, 2);

Объяснение кода листинга программы

  1. Создание таблицы salespeople с полями sid, sname, comm и настройками для ИнниДБ.
  2. Вставка данных в таблицу salespeople.
  3. Создание таблицы categories с полями pcategory_id, pcname и настройками для ИнниДБ.
  4. Вставка данных в таблицу categories.
  5. Создание таблицы products с полями pid, pbrand, pcategory_id, pname, pquantity, pcost, primary key (pid) и настройками для ИнниДБ.
  6. Вставка данных в таблицу products.
  7. Создание таблицы orders с полями oid, odate, amt, pid, sid, primary key(oid), foreign key(pid) references products(pid) ON DELETE CASCADE ON UPDATE CASCADE, foreign key(sid) references salespeople(sid) ON DELETE CASCADE ON UPDATE CASCADE и настройками для ИнниДБ.
  8. Вставка данных в таблицу orders.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут