2012-11-06 2 views
1

5 개의 테이블을 생성하는 MySQL-Script를 설정하려고합니다. 세 개의 테이블에서는 FOREIGN KEY가, 그 중 세 가지에 대해 동일한 오류 메시지가 나타납니다외래 키를 정의하려고 할 때 "키 열이 테이블에 없습니다."

Error Code: 1072. Key column ... doesn't exist in table 

Gebaeude, Dept_NameMat_Nr

있는 것은 여기에 스크립트

use cs261_24; 

drop table if exists Professor; 
drop table if exists Departement; 
drop table if exists Gebaeude; 
drop table if exists Student; 
drop table if exists Pruefung; 


CREATE TABLE Gebaeude (
         Gebaeude VARCHAR(20) NOT NULL PRIMARY KEY, 
         Hauswart VARCHAR(20) NOT NULL, 
         Adresse  VARCHAR(20) NOT NULL 
)engine = innodb; 

CREATE TABLE Professor (
         P_ID  INTEGER PRIMARY KEY CHECK (P_ID > 0), 
         P_Name  VARCHAR(20) NOT NULL, 
         Dept_Name VARCHAR(20) NOT NULL, 
         Raum  INTEGER UNIQUE CHECK (Raum > 0), 
         Tel   INTEGER(10) UNIQUE CHECK (Tel > 210000000), 
         FOREIGN KEY (Gebaeude) REFERENCES Gebaeude (Gebaeude) 
)engine = innodb; 

CREATE TABLE Departement (
         Dept_Name VARCHAR(20) NOT NULL PRIMARY KEY, 
         Vorsteher VARCHAR(20) NOT NULL 
)engine = innodb; 

CREATE TABLE Student (
         Mat_Nr  INTEGER(8) PRIMARY KEY CHECK (Mat_Nr > 0), 
         S_Name  VARCHAR(20) NOT NULL, 
         Semester INTEGER CHECK(Semester > 0), 
         FOREIGN KEY (Dept_Name) REFERENCES Departement (Dept_Name) 
)engine = innodb; 

CREATE TABLE Pruefung (
         Pr_ID  INTEGER PRIMARY KEY CHECK(Pr_ID > 0), 
         Fach  VARCHAR(20) NOT NULL, 
         Pruefer  VARCHAR(20) NOT NULL, 
         Note  FLOAT CHECK (Note >= 1 AND Note <= 6), 
         FOREIGN KEY (Mat_Nr) REFERENCES Student (Mat_Nr) 
)engine = innodb; 
에게의 반면에 ...

왜? 나는 MySQL Workbench와 함께 작업하며, 생성 된 테이블을 명확하게 볼 수 있으며, 특정 컬럼이 기본 키로 표시되어있다.

답변

6

당신은 잘못하고있다가,이 예제를 살펴

http://www.sqlfiddle.com/#!2/a86cf

당신의 FK 줄 수 있어야보기 다음과 같습니다 :

FOREIGN KEY (field_that_will_be_Fk) REFERENCES Table_to_reference (field_to_reference)

IE =

CREATE TABLE Gebaeude (
         Gebaeude VARCHAR(20) NOT NULL PRIMARY KEY, 
         Hauswart VARCHAR(20) NOT NULL, 
         Adresse  VARCHAR(20) NOT NULL 
)engine = innodb; 

CREATE TABLE Professor (
         Gebaeude_FK varchar(20) NOT NULL, 
         P_ID  INTEGER PRIMARY KEY CHECK (P_ID > 0), 
         P_Name  VARCHAR(20) NOT NULL, 
         Dept_Name VARCHAR(20) NOT NULL, 
         Raum  INTEGER UNIQUE CHECK (Raum > 0), 
         Tel   INTEGER(10) UNIQUE CHECK (Tel > 210000000), 
         FOREIGN KEY (Gebaeude_FK) REFERENCES Gebaeude (Gebaeude) 
)engine = innodb; 
1

외래 키로 제한하기 전에 각 테이블에서 열을 만들어야합니다.

참조 링크 참조 : Link

관련 문제