본문 바로가기

Errors

ORA-00907 : missing right parenthesis

 

테이블 생성시 (CREATE TABLE) ORA-00907오류 발생

지금까지 보았던 ORA-00907오류는 , / " /' 등 세미콜론이나 따옴표 한 쪽이 빠진 경우 발생하였음

그러나 이번 경우 아무리 봐도 특수문자 빠진 부분이 보이지 않아 고민을 하였는데

원인은 두 가지였음 

1. DEFAULT 제약조건과 NOT NULL 제약조건은 함께 사용 불가

- DEFAULT 제약조건 자체에 NULL 일 경우의 추가할 값을 포함하고 있으므로 함께 사용이 불가함

 

2. CHECK제약조건과 DEFAULT 제약조건을 함께 사용 시 DEFAULT -> CHECK 순으로 제약조건을 걸어야 함

 

 

 

CHECK 제약조건과 DEFAULT 제약조건 함께 사용시 DEFAULT 가 먼저 와야함

STATUS CHAR(1) DEFAULT 'Y' CHECK(STATUS IN('Y', 'N'))  로 

순서를 바꾸니 해결

 

CREATE TABLE DIARY(
DIARY_NO NUMBER PRIMARY KEY,
START_DATE DATE NOT NULL,
END_DATE DATE NOT NULL,
CREATE_DATE DATE DEFAULT SYSDATE,
GOODS VARCHAR2(30)  NOT NULL CHECK(GOODS IN('IN', 'OUT')),
CONTENT VARCHAR2(1000) NOT NULL,
STATUS CHAR(1) DEFAULT 'Y' CHECK(STATUS IN('Y', 'N')) ,
MEM_NO NUMBER REFERENCES MEMBER(MEM_NO)
);