sql >> Databáze >  >> RDS >> Mysql

Nepodařilo se přidat omezení cizího klíče. Chybějící index pro omezení Kód chyby:1822

Máte složený primární klíč, takže potřebujete složený cizí klíč:

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)
);

Jen pro pořádek, nejsem příznivcem kompozitních primárních klíčů. Také si myslím, že předpoklady potřebují dva reference kurzu. Takže:

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. Řádky tabulky Mysql DB mizí

  2. Počet datových typů Mysql json a podle skupin

  3. časový limit dotazu python MySQLDB

  4. Jak nahradit hodnotu oddělenou čárkami ve sloupci tabulky uživatelskou vstupní hodnotou oracle