-- ON DELETE CASCADE 제약조건 실습..

 

-- 부모 테이블

CREATE TABLE TAB_A (

idx     int identity(1,1) primary key,

value     varchar(10)

)

 

-- 서브 테이블

CREATE TABLE TAB_A_SUB (

seq     int identity(1,1) primary key,

value    varchar(10),

idx        int

)

 

-- FK 설정

ALTER TABLE  [dbo].[TAB_A_SUB]  WITH CHECK ADD  CONSTRAINT [FK_TAB_A_idx] FOREIGN KEY([idx])

REFERENCES [dbo].[TAB_A] ([idx])

-- 데이터 삽입

INSERT INTO TAB_A (value) VALUES('aaa');

INSERT INTO TAB_A_SUB(value, idx) VALUES ('ttt', 1);

 

-- 삭제

DELETE [TAB_A] WHERE idx = 1

 

-- FK 제약조건때문에 삭제가 되지 않는다.

-- 삭제하려면 서브 테이블의 데이터 부터 지워야한다.

-- 그러나 ON DELETE CASCADE 제약조건을 서브 테이블에 부여해주면 부모테이블 삭제시 서브 테이블의 데이터도 함께 삭제 된다.

 

 

-- ON DELETE CASCADE 제약조건

ALTER TABLE [dbo].[TAB_A_SUB] ADD CONSTRAINT [FK_cascade_idx] FOREIGN KEY ([idx])
   REFERENCES [dbo].[TAB_A]([idx]) ON DELETE CASCADE

 

-- 삭제

DELETE [TAB_A] WHERE idx = 1

 

 

 

 

 

 

반응형

+ Recent posts