DISABLE의 종류
NOVALIDATE
'validate'. 즉, '확인'이라는 뜻이다.
즉, 'novalidate'라는 것은 '확인하지 않는다'라는 뜻이다.
이제 실제로 실습을 한번 해보겠다.
PRIMARY KEY 설정이 돼있는 컬럼에 중복 데이터 삽입해보기
INSERT INTO t_users VALUES(1, 'kevin');
INSERT INTO t_users VALUES(1, 'kevin');
*
-- ERROR at line 1: unique constraint 쏼라쏼라
이렇게 PRIMARY KEY가 설정되어 있는 컬럼이라 중복 데이터를 허용하지 않는다.
이제 제약조건을 확인하지 않기 위해 NOVALIDATE
설정을 적용해보겠다.
NOTVALIDATE로 수정하기
ALTER TLABE t_users
DISABLE NOVALIDATE CONSTRAINT u_id_pk;
위와 같이 DISABLE NVALIDATE
로 제약조건을 DISABLE
하게 되면 CONSTRAINT
가 없는 것과 동일하게 작동된다.
DISABLE VALIDATE
는 이와 반대로 동작한다.
VALIDATE
이번에는 NOT NULL
설정이 된 컬럼(name)에 NULL
을 입력해보겠다.
NOT NULL 컬럼에 NULL 입력해보기
INSERT INTO t_users VALUES(2, NULL);
INSERT INTO t_users VALUES(2, NULL);
-- ERROR
이와 같이 name 컬럼에 NOT NULL
제약 조건이 설정되어 있어서 NULL
값을 허용하지 않습니다.
VALIDATE로 수정하기
ALTER TABLE t_users
DISALBE VALIDATE CONSTRAINT u_name_nn
INSERT INTO t_users VALUES(2, NULL);
-- ERROR: NO insert/update/delete on table with constraint (u_name_nn) disabled and validated
이렇게 수정 전과 똑같이 입력이 안 된다.
에러 내역을 보면 DISABLE VALIDATE
설정이 돼있는 컬럼은 insert/update/delete 작업을 수행할 수 없다는 내용이다.
즉, 이 옵션을 해당 컬럼의 데이터를 변경할 수 없게 하는 옵션이다.
그럼 다른 컬럼의 내용을 변경해야지!
라고 생각했지만... 다른 컬럼에 내용을 insert/update/delete하려고 해도 불가능하다는 에러가 발생합니다.
즉, DISABLE VALIDATE
옵션은 테이블의 내용을 변경할 수 없도록 만드는 옵션임을 알 수 있습니다.
DISABLE의 기본 옵션
앞서 알아본 것과 같이, VALIDATE
옵션을 설정하면 테이블에 아무 것도 설정할 수 없기 떄문에 DISABLE
의 기본 옵션은 NOTVALIDATE
이다.
이렇게 DISABLE을 통해 제약조건을 비활성화 할 수 있다면, 활성화 할 수도 있어야 할 것이다.
다음 글에서 알아보겠다.
'데이터베이스_Database > SQL' 카테고리의 다른 글
[SQL] 제약 조건 조회/삭제하기 ! (0) | 2024.04.14 |
---|---|
[SQL] 제약 조건 ENABLE (0) | 2024.04.14 |
[SQL] FOREIGN KEY와 CASCADE?(ON DELETE / ON UPDATE) (0) | 2024.04.14 |
[SQL] Constraint, 제약조건 (0) | 2024.04.13 |
[SQL]MySQL Oracle_SQL의 날짜 포맷 (2) | 2023.12.03 |