환자 테이블에 환자번호 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 가 한 단계만 적용된다고 오해한 값이다.

오류나 개정된 내용이 보이면 알려주세요

이어서 풀어보기

[SQLD] SQL 개발자 기출유형 모의고사 6회 50문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요SQLD SQL 개발자 실전 모의고사 암기장 전체 보기