업무 규칙상 수강신청 1건은 1회차 납부 1건과 반드시 함께 등록되어야… | [SQLD] SQL 개발자 기출유형 모의고사 7회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 7회
업무 규칙상 수강신청 1건은 1회차 납부 1건과 반드시 함께 등록되어야 한다. 다음 데이터와 작업 기록에 대한 설명으로 옳은 것은?[수강신청]
| 신청번호 | 수강생번호 | 신청일 |
|---|---|---|
| R1 | S1 | 2026-03-02 |
| R2 | S2 | 2026-03-02 |
| R3 | S1 | 2026-03-04 |
[납부]
| 신청번호 | 회차 | 금액 |
|---|---|---|
| R1 | 1 | 150000 |
| R2 | 1 | 120000 |
| R3 | 1 | 150000 |
| R3 | 2 | 150000 |
[작업 기록]
INSERT INTO 수강신청 VALUES ('R4', 'S3', DATE '2026-03-05');
COMMIT;
INSERT INTO 납부 VALUES ('R4', 1, 180000); -- 제약 위반 오류
ROLLBACK;1
R3은 납부가 두 건이라 규칙을 어겼다
2
R4는 신청만 남아 규칙을 어긴 상태다
3
두 INSERT 는 따로 커밋해야 한다
4
ROLLBACK 으로 R4 신청도 취소된다
해설
R4 신청은 이미 COMMIT 으로 확정된 뒤 납부 입력이 실패했으므로 ROLLBACK 을 해도 신청만 남아 함께 등록 규칙을 어긴 상태가 된다.
두 INSERT 를 하나의 트랜잭션으로 묶고 모두 성공한 뒤 한 번만 커밋해야 원자성이 지켜진다.
- ROLLBACK 은 마지막 COMMIT 이후 작업만 되돌리므로 R4 신청은 남는다.
- 1회차 납부가 있으면 되므로 납부가 두 건인 R3 은 규칙에 맞다.
- 따로 커밋하면 한쪽만 저장되는 상태가 생겨 오히려 위험하다.
오류나 개정된 내용이 보이면 알려주세요