테이블 생성

create table p (

  pdtno number(3) not null,

  pdtname varchar2(25),

  qty number(6, 2),

  constraint pdtnopk primary key(pdtno)

);


create table pc (

  pdtno number(3) not null,

  constraint pdtnofk foreign key(pdtno) references p(pdtno)

);


이렇게 하면 pc(pdtno)가 p(pdtno)를 참조한다.

따라서 p 테이블의 레코드는 맘대로 삭제도 못 함.

그러나 pc 테이블을 다음과 같이 생성하면,


create table pc (

  pdtno number(3) not null,

  constraint pdtnofk foreign key(pdtno) references p(pdtno) on delete cascade

);


p 테이블의 레코드를 삭제하면 pc 테이블의 레코드가 연쇄적으로 삭제된다.


on delete cascade 이외에 on delete set null 라는 제약도 있다.

부모 레코드가 삭제되면 자식 레코드가 null이 된다.

+ Recent posts