2014-02-27 4 views
-1

두 번째 sql create 문에서 제약 조건에 무엇이 잘못된 것인지 알 수 없습니다.SQL 제약 : 외래 키

CREATE TABLE `sd344`.`COURSES` 
(
`Cno` CHAR(11) NOT NULL, 
`Ctitle` VARCHAR(11) NOT NULL, 
`Hours` TIME NOT NULL, 
`DeptId` INT NOT NULL DEFAULT '13', 
CONSTRAINT COURSPK 
PRIMARY KEY (Cno) 
); 

CREATE TABLE `DEPARTMENTS` 
(
`DeptId` INT NOT NULL, 
`DeptName` VARCHAR(11) NOT NULL, 
`College` VARCHAR(11) NOT NULL, 
PRIMARY KEY(DeptId), 
UNIQUE(DeptName), 
CONSTRAINT DEPTFK 
FOREIGN KEY(DeptId) REFERENCES COURSES 
ON DELETE SET DEFAULT ON UPDATE CASCADE 
); 

문제는 누군가가 내가 그것을 알아내는 데 도움 주실 래요

CONSTRAINT DEPTFK 
FOREIGN KEY(DeptId) REFERENCES COURSES 
ON DELETE SET DEFAULT ON UPDATE CASCADE 

에서 오는 것 같다? 감사합니다

+3

어떤 DBMS 및 오류 또는 잘못된 행동을해야 하는가? –

+0

@ LuciaPasarin 어떤 DBMS가 중요한가요? [ANSI 외래 키 구문] (http://en.wikipedia.org/wiki/Foreign_key#Defining_foreign_keys)은 매우 명확합니다. 또한, 나는 그것이 backticks로 인한 MySQL이라고 추측하고있다. – Phil

+0

DBMS는 문법 때문에뿐만 아니라 예상되는 행동 때문에 중요 할 수도있다. –

답변

0

외국 키를 잘못된 테이블에 적용하려고 시도한 것처럼 보입니다. 이 COURSES

FOREIGN KEY (DeptId) REFERENCES DEPARTMENTS 

또는

FOREIGN KEY (DeptId) REFERENCES DEPARTMENTS (DeptId) 
+0

그것은 작동합니다. 고마워요 !! – user3112318

+0

그러나 어떻게 "ON DELETE SET DEFAULT ON CASCADE"부분에 추가합니까? 고마워요 – user3112318

+0

@ user3112318 이전과 같은 방식입니다. 너는 틀린 표에 선언을했다. – Phil