MySQL不断返回'无法添加外键约束'。
在重新制作之前,每次执行都会删除这些表。
目前在完成所有表格之后,我尝试改变表格以包含外键;我在创建表时尝试添加密钥,但程序返回相同的错误。
我确信每个被引用的列也具有相同的值。
CREATE TABLE utopia.student (id_student VARCHAR(6) NOT NULL,
Student_Name VARCHAR(45) NOT NULL, Degree VARCHAR(45) NOT NULL,
PRIMARY KEY (id_student));
-- Create Student Table
CREATE TABLE utopia.module (id_module VARCHAR(6) NOT NULL,
Module_Name VARCHAR(45) NOT NULL, Credits Int NOT NULL,
PRIMARY KEY (id_module));
-- Create Module Table
CREATE TABLE utopia.registered (id_student VARCHAR(6) NOT NULL,
id_module VARCHAR(6) NOT NULL, PRIMARY KEY (id_student, id_module));
-- Create Registered Table
CREATE TABLE utopia.staff (id_staff VARCHAR(6) NOT NULL,
Staff_Name VARCHAR(45) NOT NULL, Grade VARCHAR(45) NOT NULL,
PRIMARY KEY (id_staff));
-- Create Staff Table
CREATE TABLE utopia.teaches (id_staff VARCHAR(6) NOT NULL,
id_module VARCHAR(6) NOT NULL, PRIMARY KEY (id_staff, id_module));
-- Create Teaches Table
ALTER TABLE utopia.student ADD FOREIGN KEY (id_student)
REFERENCES registered(id_student);
ALTER TABLE utopia.module ADD FOREIGN KEY (id_module)
REFERENCES registered(id_module);
ALTER TABLE utopia.registered ADD FOREIGN KEY (id_student)
REFERENCES student(id_student),
ADD FOREIGN KEY (id_module)
REFERENCES module(id_module);
ALTER TABLE utopia.staff ADD FOREIGN KEY idstaff REFERENCES teaches(id_staff);
ALTER TABLE utopia.teaches ADD FOREIGN KEY (id_staff) REFERENCES staff(id_staff),
ADD FOREIGN KEY (id_module) REFERENCES module(id_module);
有关此主题的任何建议/教程将不胜感激
答案 0 :(得分:1)
如果要添加外键,父表的列必须至少为主键或唯一。在registered
表id_module
是复合键的一部分,并不会将其删除,只需在其上添加一个uniqe键。你也有一些缺失的括号。
答案 1 :(得分:-1)
**use following command syntax**
ALTER TABLE table_name ADD FOREIGN KEY column_name(column_name)REFERENCES table_name(column_name)
示例强>
ALTER TABLE utopia.student ADD FOREIGN KEY utopia.student.id_student(id_student_fck01)
REFERENCES utopia.registered(utopia.registered.id_student);