Mysql
 sql >> база данни >  >> RDS >> Mysql

Неуспешно добавяне на ограничението за външен ключ. Липсващ индекс за ограничение Код на грешка:1822

Имате съставен първичен ключ, така че имате нужда от съставен външен ключ:

CREATE TABLE Prerequisite_to(
    infs CHAR(4),
    course_number CHAR(3),
    PRIMARY KEY (infs,course_number),
    FOREIGN KEY (infs, course_number) REFERENCES Class(infs, course_number)
);

Само за протокола, не съм фен на съставните първични ключове. Също така смятам, че предпоставките се нуждаят от две препратки към курса. И така:

CREATE TABLE Classes (
    class_id int auto_increment primary key,
    infs CHAR(4) NOT NULL,
    course_number CHAR(3) NOT NULL,
    unique (infs, course_number)
);

CREATE TABLE Prerequisites (
    preresequisite_id int auto_increment primary key,
    class_id int,
    prerequisite_class_id int,
    FOREIGN KEY (class_id) REFERENCES Classes(class_id),
    FOREIGN KEY (prerequisite_class_id) REFERENCES Classes(class_id)
);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Добавянето на dbFailOnError към CurrentDb.Execute не успява да актуализира таблицата

  2. enum или char(1) в MySQL

  3. Промяна на заглавието на SQL колона чрез заявка

  4. Как да поставя обратни отметки в име на колона, наречена ключ за хибернация

  5. Командата python setup.py egg_info не успя с код за грешка 1 в /tmp/pip-install-fs0wmmw4/mysqlclient/