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

    念のために言っておきますが、私は複合主キーのファンではありません。また、前提条件には2つが必要だと思います コース参照。だから:

    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データベースエンジンとは何ですか?

    2. 私が見たことがないMySQL接続エラー

    3. 複数の列の値が同じであるMySQLテーブルがある場合、最新の2つを除くすべてのエントリを削除するにはどうすればよいですか?

    4. MySQL GROUPBY2列