다음 정의와 데이터에서 DELETE 문을 실행한 뒤 (계약 행 수, 청… | [SQLD] SQL 개발자 기출유형 모의고사 10회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 10회
다음 정의와 데이터에서 DELETE 문을 실행한 뒤 (계약 행 수, 청구 행 수)로 옳은 것은?[계약]
| 계약번호 | 고객명 |
|---|---|
| 501 | 윤채원 |
| 502 | 장태민 |
| 503 | 홍유나 |
[청구]
| 청구번호 | 계약번호 | 금액 |
|---|---|---|
| 1 | 501 | 100 |
| 2 | 502 | 40 |
| 3 | 501 | 60 |
| 4 | 503 | 90 |
| 5 | 502 | 30 |
CREATE TABLE 청구 (
청구번호 INT PRIMARY KEY,
계약번호 INT REFERENCES 계약(계약번호)
ON DELETE CASCADE,
금액 INT
);
DELETE FROM 계약 WHERE 계약번호 = 501;1
2, 4
2
3, 5
3
2, 3
4
2, 5
해설
ON DELETE CASCADE 는 부모 행이 삭제될 때 그 행을 참조하는 자식 행도 함께 삭제하므로, 계약 501과 그 청구 2건이 지워져 (2, 3) 이 된다.
다른 계약을 참조하는 청구 3건은 영향을 받지 않고 그대로 남는다.
- (2, 5) 는 자식 행을 남기고 FK 만 NULL 로 바꾸는 SET NULL 의 동작이다.
- (3, 5) 는 자식이 있으면 부모 삭제를 막는 RESTRICT 의 동작이다.
- (2, 4) 는 연쇄 삭제가 자식 한 건에만 적용된다고 본 값이다.
오류나 개정된 내용이 보이면 알려주세요