gpt4 book ai didi

mysql - 外键不会添加

转载 作者:行者123 更新时间:2023-11-29 21:12:25 25 4
gpt4 key购买 nike

我有这两个表,但外键不会添加。这是我正在使用的查询,但我不断收到无法添加外键错误。我还包括了创建表语句。感谢您的帮助

ALTER TABLE courses ADD CONSTRAINT fk_fs FOREIGN KEY (teacher1) 
REFERENCES teachers(fullName)

CREATE TABLE IF NOT EXISTS `courses` (
`courseID` int(11) NOT NULL AUTO_INCREMENT,
`courseName` varchar(200) DEFAULT NULL,
`module1` varchar(200) DEFAULT NULL,
`module2` varchar(200) DEFAULT NULL,
`module3` varchar(200) DEFAULT NULL,
`module4` varchar(200) DEFAULT NULL,
`teacher1` varchar(200) DEFAULT NULL,
`teacher2` varchar(200) DEFAULT NULL,
`teacher3` varchar(200) DEFAULT NULL,
`teacher4` varchar(200) DEFAULT NULL,
PRIMARY KEY (`courseID`)
)

CREATE TABLE IF NOT EXISTS `teachers` (
`teacherID` int(11) NOT NULL AUTO_INCREMENT,
`userID` int(11) DEFAULT NULL,
`fullName` varchar(200) DEFAULT NULL,
`officeOpen` varchar(5) DEFAULT NULL,
`officeClose` varchar(5) DEFAULT NULL,
`email` varchar(100) DEFAULT NULL,
PRIMARY KEY (`teacherID`)
)

最佳答案

MySQL 中的外键必须引用索引列。我认为您真正想做的是将外键列添加到“类(class)”表中,例如。 fkTeacherID列如下:

CREATE TABLE IF NOT EXISTS `courses` (
`courseID` int(11) NOT NULL AUTO_INCREMENT,
`courseName` varchar(200) DEFAULT NULL,
`module1` varchar(200) DEFAULT NULL,
`module2` varchar(200) DEFAULT NULL,
`module3` varchar(200) DEFAULT NULL,
`module4` varchar(200) DEFAULT NULL,
`teacher1` varchar(200) DEFAULT NULL,
`teacher2` varchar(200) DEFAULT NULL,
`teacher3` varchar(200) DEFAULT NULL,
`teacher4` varchar(200) DEFAULT NULL,
`fkTeacherID` int(11),
PRIMARY KEY (`courseID`)
);

CREATE TABLE IF NOT EXISTS `teachers` (
`teacherID` int(11) NOT NULL AUTO_INCREMENT,
`userID` int(11) DEFAULT NULL,
`fullName` varchar(200) DEFAULT NULL,
`officeOpen` varchar(5) DEFAULT NULL,
`officeClose` varchar(5) DEFAULT NULL,
`email` varchar(100) DEFAULT NULL,
PRIMARY KEY (`teacherID`)
);

ALTER TABLE courses ADD CONSTRAINT fk_fs FOREIGN KEY (fkTeacherID)
REFERENCES teachers(TeacherID)

然后您可以创建一个查询,例如:

SELECT fullName 
from teachers t
inner join courses c on t.TeacherID = c.fkTeacherID

然后您可以消除teacher1..4 列。您可能还想对模块进行同样的操作。您还消除了类(class)限制的 4 名教师。

SQLFIDDLE

关于mysql - 外键不会添加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36251772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com