티스토리 뷰

Dev4u Life

[오라클] check 제약조건 활용

데브포유 2010. 7. 29. 15:17
반응형
제약조건을 너무 남발하면 DB성능이 30%정도 떨어진다고 합니다.
적당한 곳에 제대로 활용하면 데이터 정합성이 더욱 견고해 지겠죠.
제약조건중 check 기능을 활용해 봅시다.
test라는 테이블의 status 컬럼이 있다고 가정하고, status 컬럼에는 'A','B','C' 값만 올 수 있다고 한다면
아래와 같은 제약조건으로 데이터 정합성을 보장할 수 있습니다.

alter table test add constraint status check( status in ('A','B','C'));

해당 컬럼 뿐만아니라 다른 컬럼과의 관계도 제약조건으로 만들 수 있습니다.
test라는 테이블에 gbn 컬럼이 있고 마찬가지로 gbn에는 'A','B','C'만 올 수 있습니다.
그런데 또다른 컬럼인 code 컬럼은 gbn이 'A'이면 6자리 문자열, 'B'면 8자리, 'C'면 10자리 문자열만 올 수 있습니다.

alter table test add constraint gbn check( ( gbn='A' and length(code) = 6)
                                                          or
                                                        ( gbn='B' and length(code) = 8)
                                                          or
                                                        ( gbn='C' and length(code) = 10)
                                                      )

check 제약조건을 적소에 활용한다면 좀더 편하게 프로그래밍할 수 있고, DB도 관리할 수 있겠죠.
반응형