sql >> Database >  >> RDS >> Mysql

Kan de beperking van de externe sleutel niet toevoegen. Ontbrekende index voor beperking Foutcode:1822

Je hebt een samengestelde primaire sleutel, dus je hebt een samengestelde externe sleutel nodig:

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

Even voor de goede orde, ik ben geen fan van samengestelde primaire sleutels. Ik denk ook dat de vereisten twee nodig hebben cursus referenties. Dus:

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. MYSQL met behulp van ruimtelijke index

  2. Het verschil tussen FIELD() en FIND_IN_SET() in MySQL

  3. Nog een dateTime-vraag

  4. CodeIgniter:een afbeelding opslaan in de database?