테이블 생성시 (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)
);