CREATE TABLE MEMBER(
MEMBER_ID VARCHAR2(20) PRIMARY KEY, -- 회원 아이디
MEMBER_PW VARCHAR2(20) NOT NULL, -- 회원 비밀번호
MEMBER_NAME VARCHAR2(20), -- 회원 이름
ADDRESS VARCHAR2(300), -- 주소
ENROLL_DATE CHAR(10) -- 가입일
);
CREATE TABLE BOARD(
BOARD_NO NUMBER PRIMARY KEY, -- 게시판 번호
BOARD_TITLE VARCHAR2(300) NOT NULL, -- 게시판 제목
BOARD_CONTENT VARCHAR2(500) NOT NULL, -- 게시판 내용
BOARD_WRITER VARCHAR2(20) REFERENCES MEMBER(MEMBER_ID) ON DELETE CASCADE, -- 작성자
BOARD_DATE CHAR(10) -- 게시판 작성일
);
< 원인 >
회원 테이블에서 MEMBER_ID를 PRIMARY KEY(unique + not null 동시에 만족해야함)로 설정했다.
그리고 게시판 테이블 BOARD_WRITER 작성자는 MEMBER_ID를 참조하도록 REFERENCES를 걸어줬다.
MEMBER 테이블을 삭제하려고 하니 아래와 같은 오류가 떴다
연결정보때문에 삭제가 안됐던거다...
ORA-02292: integrity constraint (SPRING.SYS_C008185) violated - child record found
< 해결 >
해당 테이블의 자식 레코드를 삭제한 다음 (board) 원래 삭제하려던 테이블 (member)을 삭제하면 된다!!!
<참고>
★ FOREIGN KEY - 삭제옵션
1. ON DELETE RESTRICTED
아무것도 지정하지 않는 경우 설정되는 기본 삭제 옵션으로
자식테이블에서 부모테이블의 데이터를 참조하고 있는 경우 데이터 삭제가 불가능 함
2. ON DELETE SET NULL
부모 테이블의 데이터 삭제 시 해당 데이터를 참조하고 있던 자식 테이블의 컬럼 값을 NULL로 변경하는 옵션
3. ON DELETE CASCADE
부모 테이블의 데이터 삭제 시 해당 데이터를 참조하고 있던 자식 테이블의 데이터까지 모두 삭제하는 옵션
반응형
'오류&해결' 카테고리의 다른 글
[spring]'org.apache.jasper.JasperException: JSP' 오류 (0) | 2022.01.17 |
---|---|
[spring]No bean named 'springSecurityFilterChain' available 오류 (0) | 2022.01.17 |
[spring]' table or view does not exist' 오류 (0) | 2022.01.17 |
[spring] JDBC 연결테스트(Oracle java) (0) | 2022.01.04 |
[Oracle] 'Starting HongServer' has encountered a problem. Server HongServer failed to start (0) | 2021.12.22 |