为什么我不能添加外键约束

时间:2017-03-09 09:44:51

标签: mysql foreign-keys

这是我的代码:

CREATE DATABASE exams;

SHOW DATABASES;

CREATE TABLE IF NOT EXISTS students(
    student_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    first_name VARCHAR(20) NOT NULL,
    middle_name VARCHAR(40),
    last_name VARCHAR(40)NOT NULL,
    email VARCHAR(60) NOT NULL,
    password CHAR(40) NOT NULL,
    reg_date DATETIME NOT NULL,
    PRIMARY KEY (student_id),
    UNIQUE(email));

SHOW table status
INSERT INTO exams_3121(student_id, first_name, middle_name, last_name, email, password, reg_date)

CREATE TABLE entries
(
 entrie_id int NOT NULL,
 student_id int NOT NULL,
 subject_id int,
PRIMARY KEY (entrie_id),
FOREIGN KEY (student_id) REFERENCES student(student_id),
FOREIGN KEY (subject_id)REFERENCES subject(subject_id)
)
CREATE DATABASE subjects;

CREATE TABLE IF NOT EXISTS subjects(
subject_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
subject_name VARCHAR(20) NOT NULL,
level_entery VARCHAR(40)NOT NULL,
exam_board VARCHAR(60) NOT NULL,
PRIMARY KEY (subject_id));

CREATE TABLE entries
(
entrie_id int NOT NULL,
entrie_id int NOT NULL,
subject_id int,
PRIMARY KEY (entrie_id),
FOREIGN KEY (student_id) REFERENCES student(student_id),
FOREIGN KEY (subject_id)REFERENCES subject(subject_id)
)

当我使用此代码时,它表示无法添加外键约束 我不知道该怎么办请提前感谢。

1 个答案:

答案 0 :(得分:0)

有两个问题。

首先,您得到了您引用错误的表格的名称。表的名称为studentssubjects,但您写了studentsubject

其次,entries表有两个entrie_id列。其中一个应该是student_id

CREATE TABLE entries
(
    entrie_id int NOT NULL,
    student_id int NOT NULL,
    subject_id int,
    PRIMARY KEY (entrie_id),
    FOREIGN KEY (student_id) REFERENCES students(student_id),
    FOREIGN KEY (subject_id) REFERENCES subjects(subject_id)
)

此外,如果您要创建多个数据库并将表格放入其中,那么如果表格与您选择的默认表格不同,则需要引用带有数据库前缀的表格。 USE命令。在您撰写之后,您实际上并未使用您使用CREATE DATABASE创建的数据库。