환자 테이블에 환자번호 1·2·3 이 있고 진료·처방에 아래 데이터가 … | [SQLD] SQL 개발자 기출유형 모의고사 6회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 6회
환자 테이블에 환자번호 1·2·3 이 있고 진료·처방에 아래 데이터가 있을 때, 다음 DELETE 실행 후 처방 테이블에 남는 행 수는?CREATE TABLE 진료 ( 진료번호 INT PRIMARY KEY, 환자번호 INT REFERENCES 환자(환자번호) ON DELETE CASCADE ); CREATE TABLE 처방 ( 처방번호 INT PRIMARY KEY, 진료번호 INT REFERENCES 진료(진료번호) ON DELETE CASCADE ); DELETE FROM 환자 WHERE 환자번호 = 1;[진료] (진료번호, 환자번호) : (10, 1) (11, 1) (12, 2) (13, 3)
[처방] (처방번호, 진료번호) : (100, 10) (101, 10) (102, 11) (103, 12) (104, 13) (105, 13)
1
3
2
5
3
4
4
6
해설
환자 1 이 삭제되면 ON DELETE CASCADE 로 그 환자의 진료 10·11 이 삭제되고, 처방의 외래키에도 CASCADE 가 있어 연쇄 삭제가 처방까지 이어진다.
진료 10·11 을 참조하던 처방 100·101·102 가 지워져 103·104·105 의 3행만 남는다.
- 4 는 진료 10 의 처방만 지워진다고 본 값이다.
- 5 는 처방 한 행만 지워진다고 본 값이다.
- 6 은 CASCADE 가 한 단계만 적용된다고 오해한 값이다.
오류나 개정된 내용이 보이면 알려주세요