테이블 제약 조건
제약조건은 데이터의 무결성을 지키기 위해 제한하는 조건으로, 테이블에는 기본키,외래키 같은 제약조건을 설정할 수 있다.
제약 조건.. 데이터의 정합성을 위해 필요한 조건이지만 잘 활용하지 못하면 개발자들 기준에서는 귀찮을 수도 있는 조건이다. (데이터 삭제나 수정이 마음대로 안되기 때문에)
그래서 꼭 필요한 부분이 있다.
바로 ON DELETE 절을 추가하는 것이다.
DELETE ON
1. 종류
on delete no action -- 기본값
on delete restrict -- 트랜잭션과 연관
on delete cascade
on delete set null
on delete set default
2. on delete caseade
부모 테이블에서 어떤 외래키를 삭제하면, 그 외래키는 참조하는 자식 테이블의 ROW가 모두 삭제되는 기능
3. on delete set null
부모 테이블에서 삭제가 일어나면, 참조를 하던 테이블의 외래키 값이 null로 세팅되는 기능
4. on delete set default
부모 테이블에서 삭제가 일어나면, 참조를 하던 테이블의 외래키 값이 기존에 설정되어 있던 기본값으로 세팅되는 기능
이 기능들은 UPDATE 절에도 동일하게 사용된다.
활용한 쿼리는 아래와 같다.
ALTER TABLE srvc.inquiry_board ADD CONSTRAINT FK_inquiry_board_TO_inquiry_category
FOREIGN KEY (category_id) REFERENCES srvc.inquiry_category (id)
on delete set null on update cascade;
inquiry_board가 참조하고 있는 inquiry_category의 category_id가 delete되면 null로 세팅하고, update되면 기본값으로 변경하라!
이렇게 테이블 제약조건을 걸어주면 자식테이블의 값을 지우고 지우고 지우고 부모를 지우도록 코드를 성가시게 작성해야할 일은 없을 것이다 ^^
그리고 데이터 입장에서도 깔끔하게 관리를 할 수 있다!
728x90
'프로그래밍 > Database' 카테고리의 다른 글
[PostgreSQL] DB 세팅 (0) | 2024.01.30 |
---|---|
[PostgreSQL] 자동 인덱스 (auto increment) 하는 법 (0) | 2023.05.19 |
[PostgreSQL] 파티션프루닝 (0) | 2023.04.04 |
[PostgreSQL] 날짜 데이터 타입 정하기 (0) | 2023.04.04 |
query 에서 변수 쓰기 (0) | 2021.10.05 |