더북(TheBook)

INSERT 문에 대한 DRI를 선언할 때 자식 테이블에 새 로우를 입력하면 RDBMS는 입력된 키 값이 부모 테이블에 존재하는지 검사해 해당 키가 없으면 새 로우를 입력할 수 없게 한다. CASCADE(부모 테이블의 데이터를 변경하거나 삭제할 때 자식 테이블에 전파한다), NO ACTION(해당 로우가 참조되고 있으면 키 값 변경을 불가능하게 한다), SET NULL/SET DEFAULT(부모 테이블의 키 값을 변경하거나 삭제하면 자식 테이블의 값을 NULL이나 기본 값으로 설정한다)처럼 UPDATEDELETE에도 DRI를 적용할 수 있다.

부모 테이블의 키 값을 삭제해서 자식 테이블의 값이 길을 잃게 하는 것을 방지하려고 DRI를 적용하는 방법이 코드 2-17에 나와 있다(Orders 테이블의 OrderNumber 값이 삭제되면 자식 테이블인 Order_DetailsOrderNumber 값도 삭제된다).

코드 2-17 자식 테이블에서 길 잃은 레코드를 방지하는 DRI 사용

ALTER TABLE Order_Details

  ADD CONSTRAINT fkOrder FOREIGN KEY (OrderNumber)

    REFERENCES Orders (OrderNumber) ON DELETE CASCADE;


신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.