-- 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