Oracle 기준으로, 다음 제약조건이 걸린 재고 테이블에 ㉠~㉣을 차… | [SQLD] SQL 개발자 기출유형 모의고사 8회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 8회
Oracle 기준으로, 다음 제약조건이 걸린 재고 테이블에 ㉠~㉣을 차례로 실행할 때 성공하는 INSERT 만 모두 고른 것은?CREATE TABLE 재고 ( 품번 CHAR(3) PRIMARY KEY, 창고 CHAR(2) NOT NULL REFERENCES 창고(창고코드), 수량 INT CHECK (수량 >= 0), 바코드 VARCHAR(13) UNIQUE ); -- 창고 테이블의 창고코드: 'W1', 'W2' -- 기존 행: ('P01', 'W1', 10, '880001') ㉠ INSERT INTO 재고 VALUES ('P02', 'W3', 5, '880002'); ㉡ INSERT INTO 재고 VALUES ('P03', 'W2', 0, NULL); ㉢ INSERT INTO 재고 VALUES ('P05', 'W1', -1, '880003'); ㉣ INSERT INTO 재고 VALUES ('P04', 'W1', 8, NULL);
1
㉡, ㉢, ㉣
2
㉡
3
㉠, ㉡, ㉣
4
㉡, ㉣
해설
㉡과 ㉣은 새 품번, 존재하는 창고, CHECK (수량 >= 0) 을 만족하는 수량이고, 바코드가 NULL 이라 UNIQUE 제약에서 중복으로 보지 않아 둘 다 성공한다.
UNIQUE 는 NULL 끼리 같은 값으로 비교하지 않으므로 ㉡ 뒤에 NULL 바코드를 다시 넣는 ㉣도 허용된다.
- ㉠은 창고 W3 가 창고 테이블에 없어 FK 위반으로 거부된다.
- ㉢은 수량 -1 이 0 이상이라는 CHECK 조건을 어겨 거부된다.
- ㉡만 고르면 UNIQUE 열에 NULL 이 한 번만 들어간다고 본 것이다.
오류나 개정된 내용이 보이면 알려주세요