2016-03-27 5 views
0

私はこれら2つのテーブルを持っていますが、外部キーは追加されません。これは私が使用しているクエリですが、私は外国キーエラーを追加することはできません。私はCreateテーブルステートメントも含めました。任意の助けをありがとう外部キーは追加されません

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`) 
) 
+0

質問を編集し、(バッククォートからMySQLを仮定)を使用しているSQLサーバーを追加しています。また、表の非主キーに外部キーを作成することもできません。試してみるとエラーが出ていると思いますが、それも付け加えてください。 –

+0

テーブルの作成前に制約を追加しようとしています。また、親カラムがプライマリKEYまたは少なくともユニークである必要がありますhttp://sqlfiddle.com/#!9/c123ae – Mihai

+0

はいMySQLと私は外部キーを追加しません前に、テーブルはすでに追加されています – usershv1994

答えて

0

インデックスキー列を参照する必要があります。私はあなたが本当にやりたいことは、 "コース"テーブルにforeigh-keyカラムを追加することだと思います。 fkTeacherID列は次のように:あなたは、その後teacher1..4列を排除することができます

SELECT fullName 
from teachers t 
inner join courses c on t.TeacherID = c.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) 

あなたは、その後のようなクエリを作成することができます。モジュールでも同じことが必要な場合があります。あなたはまた、コースの制約に4人の教師を排除します。

SQLFIDDLE

関連する問題