[SQL] 제약 조건 ENABLE

DISABLE(비활성화)되어 있던 제약 조건을 ENABLE(활성화)하는 옵션도 NOVALIDATE / VALIDATE 로 두 가지가 있다.

ENABLE NOVALIDATE

ENABLE NOVALIDATE 옵션은 제약 조건을 ENABLE하는 시점까지 해당 테이블에 들어 있는 데이터는 검사하지 않고 ENABLE한 시점부터만 제약 조건을 검사하는 옵션이다.

 

이와 달리, ENABLE VALIDATE 옵션은

ENABLE VALIDATE

ENABLE VALIDATE는 제약 조건은 ENABLE하는 시점까지 테이블에 입력되어 있던 모든 데이터를 전부 검사하며,

신규로 입력되는 데이터도 전부 검사하는 옵션이다.

주의사항 1

즉, ENABLE 옵션을 지정하는 순간 지금까지 입력한 모든 데이터를 검사하기 때문에, LOCK이란 것을 설정하고 작업한다.

이런 특성 때문에 사용자들이 테이블의 데이터를 많이 변경하는 시간대에는 해당 작업을 실행하면 안된다.

왜?

제약 조건을 ENABLE VALIDATE하는 동안 데이터를 변경하는 모든 작업이 중단될 수 있기 때문이다.

 

주의사항 2

또한, ENABLE VALIDATE 설정으로 인해
그동의 작업을 모두 검사하는 과정에서
제약 조건에 위배되는 작업이 있다면
해당 작업의 실행을 취소한다.

이렇게 되면 사람이 위반되는 데이터를 찾아서 적절하기 조치한 후,
다시 ENABLE작업을 반복해서 시도해야 하는데,
문제는 '일일이' 찾아야 한다는 것이다.

때문에 ENABLE VALIDATE일 경우에는
꼭 EXCEPTIONS라는 테이블을 사용해서
에러사항을 별도로 기록하게 만들어야 한다.

ENABLE의 기본값

ENABLE의 기본값은 VALIDATE이다.