반응형
CASCASE 옵션
UPDATE CASCADE : 부모 테이블의 데이터를 수정할 떄 이를 참조하고 있는
자식 테이블의 데이터도 함께 수정한다
DELETE CASCASE : 부모테이블의 데이터를 삭제할 때 이를 참조하고 있는
자식 테이블의 데이터도 함께 삭제한다
CASCADE
상품 판매
새우깡 쌔우깡
.
.
새우깡
.
.
새우깡이 단종되었을때 상품 새우깡을 지우면 CASCADE 관련옵션으로 판매된 새우깡이 지워진다 판매가 누락되면 구속되겠지 ㅋㅋ
회사에서 100명을 뽑는데 1000명이 지원했다
그리고 100명을 뽑았다 그리고 나머지 900명의 데이터를 지워야한다 이때 CASCADE 쓰면유용함
관계형성으로된 데이블에 유용하다
업무에따라서 정확하게 사용한다
ON DELETE CASCADE 또는 ON DELETE SET NULL
자식 테이블에 데이터 있는 부모 테이블의 데이터 삭제
제약조건 참조
delete 문 참조 • ON DELETE CASCADE를 사용하면 자식 테이블에 관련된 행이 있지만 부모 테이블에서 그 행의 삭제를 허용할 수 있다.
• ON DELETE SET NULL은 자식 테이블이 참조하는 부모 테이블의 값이 삭제되면 자식 테이블의 값을 NULL 값으로 변경시킨다.
자식 테이블에 데이터 있는 부모 테이블의 데이터 삭제
제약조건 참조
delete 문 참조 • ON DELETE CASCADE를 사용하면 자식 테이블에 관련된 행이 있지만 부모 테이블에서 그 행의 삭제를 허용할 수 있다.
• ON DELETE SET NULL은 자식 테이블이 참조하는 부모 테이블의 값이 삭제되면 자식 테이블의 값을 NULL 값으로 변경시킨다.
부모테이블 bb와 자식테이블 aa에서 자식 테이블에 데이터가 있는 경우에 부모 테이블의 데이터를 삭제하는 예이다.
【예제】 SQL> select table_name,constraint_name,constraint_type, 2 r_constraint_name from user_constraints 3 where table_name IN('AA','BB'); TABLE_NAME CONSTRAINT_NAME C R_CONSTRAINT_NAME ---------- -------------------- - -------------------- AA AA_ID_PK P BB BB_NO_PK P BB BB_NAME_UK U SQL> alter table aa 2 add (constraint aa_no_fk foreign key(no) 3 references bb(no) ON DELETE CASCADE); 테이블이 변경되었습니다. SQL> alter table aa 2 add (constraint aa_name_fk foreign key(name) 3 references bb(name) ON DELETE SET NULL); 테이블이 변경되었습니다. SQL> select table_name,constraint_name,constraint_type, 2 r_constraint_name 3 from user_constraints 4 where table_name IN('AA','BB'); TABLE_NAME CONSTRAINT_NAME C R_CONSTRAINT_NAME ---------- -------------------- - -------------------- AA AA_ID_PK P AA AA_NO_FK R BB_NO_PK AA AA_NAME_FK R BB_NAME_UK BB BB_NO_PK P BB BB_NAME_UK U SQL> select * from bb; NO SNO NAME COUNT ---------- ---------- ---------- ---------- 1111 1000 조아라 1111000 2222 2000 편안해 2222000 SQL> select * from aa; ID NAME NO ---------- ---------- ---------- 1000 조아라 1111 2000 편안해 2222 SQL> delete from bb where no=1111; 1 행이 삭제되었습니다. SQL> delete from bb where no=2222; 1 행이 삭제되었습니다. SQL> select * from bb; 선택된 레코드가 없습니다. SQL> select * from aa; 선택된 레코드가 없습니다. SQL>
'Database > MS-SQL' 카테고리의 다른 글
엑셀을 MSSQL에 바로 올리기 excel 을 바로 DB에 올리기 엑셀 데이터 베이스로 가져오기 SSMS (0) | 2009.02.10 |
---|---|
db 데이터 베이스 백업 backup 복원 백업 복원 (0) | 2009.01.13 |
SELECT @@IDENTITY 최근에 들어간 PK값을 돌려주는 것 (0) | 2009.01.09 |
DB 정리 쿼리교도소탈출 집계 함수 (0) | 2008.11.12 |
DB 조인(JOIN)의 기초 순위만드는 쿼리 셀프조인 (Self JOIN) (0) | 2008.10.29 |
DB 관련 쿼리 INSERT INTO SELECT 문 셀렉트값을 다른 테이블 넣을때 (0) | 2008.10.29 |
DB mster 트리거 저장 되는곳 팁 (0) | 2008.10.22 |
DB 데이터의 고가용성 , SQL Server 2005 통합 서비스 , 서버자동화 ppt (0) | 2008.10.22 |