문제
다음 SQL 중 오류가 발생하는 문장으로 가장 적절한 것은?
SQLCREATE TABLE SQLD_55_34_01 ( COL1 VARCHAR2(50), COL2 NUMBER, COL3 VARCHAR2(50), CONSTRAINT PK_01 PRIMARY KEY (COL1) ); CREATE TABLE SQLD_55_34_02 ( COL4 VARCHAR2(50), COL5 NUMBER, COL1 VARCHAR2(50), CONSTRAINT PK_02 PRIMARY KEY (COL4), CONSTRAINT FK_02_01 FOREIGN KEY (COL1) REFERENCES SQLD_55_34_01(COL1) ); -- 1 INSERT INTO SQLD_55_34_01 VALUES ('A',100,'가'); -- 2 INSERT INTO SQLD_55_34_02 VALUES ('02_A',100,NULL); -- 3 INSERT INTO SQLD_55_34_02 VALUES ('02_B',200,'A'); -- 4 UPDATE SQLD_55_34_02 SET COL1 = 'B' WHERE COL4 = '02_A';
① 1번 INSERT ② 2번 INSERT ③ 3번 INSERT ④ 4번 UPDATE
정답
4번
해설
정답: 4. 자식 테이블의 외래키 COL1을 부모 테이블에 존재하지 않는 값 'B'로 변경하려 하므로 참조 무결성 위반이 발생한다.
오답 풀이
- 1번: 부모 테이블에 'A'를 정상 삽입한다.
- 2번: 외래키 컬럼은 NULL 허용 시 NULL 삽입이 가능하다.
- 3번: 부모 테이블에 'A'가 존재하므로 정상 삽입된다.
- 4번: 부모 키 'B'가 없으므로 오류가 발생한다.
보충 개념 외래키는 부모 테이블에 존재하는 값만 참조할 수 있다. 단, 외래키 컬럼이 NULL을 허용하면 NULL 값은 참조 무결성 위반이 아니다.