제약 조건과는 별개로 특정 열에 저장할 값이 지정되지 않았을 경우 기본값을 DEFAULT키워드를 이용하면 된다.
CREATE TABLE TABLE_DEFAULT (
LOGIN_ID VARCHAR2(20) CONSTRAINT TBLDFT_LGNID_PK PRIMARY KEY,
LOGIN_PWD VARCHAR2(20) DEFAULT '1234',
TEL VARCHAR2(20) );
>> 보통 비밀번호를 기본값으로 설정하지는 않지만 직급을 사원으로 고정한다거나 할 때
INSERT INTO TABLE_DEFAULT VALUES ('TEST_ID_1', NULL, '010-1234-4578');
INSERT INTO TABLE_DEFAULT (LOGIN_ID,TEL) VALUES ('TEST_ID_2','010-3456-7890');
SELECT * FROM TABLE_DEFAULT ;
LOGIN_ID = TEST_ID_1 에는 비밀번호가 NULL로 들어가고,
LOGIN_ID = TEST_ID_2 에는 비밀번호가 들어가지 않았으므로 1234로 출력된다.
제약조건 비활성화, 활성화 알아보기
제약 조건은 데이터 무결성을 보장하는 데 중요한 역할을 한다. 하지만 신규 기능 개발 또는 테스트 같은 특정 업무를 수행해야 할 때 제약 조건이 걸림돌이 되는 경우가 종종 생긴다. 이때 여러 필요에 의해 제약조건을 비활성화하거나 비활성화 되어있는 제약 조건을 다시 활성화할 수 있다. 비활성화에는 DISABLE절을, 활성화에는 ENABLE절을 사용한다/
ALTER TABLE 테이블이름
DISABLE [NOVALIDATE / VALIDATE(선택)] CONSTRAINT 제약조건이름;
ALTER TABLE 테이블이름
ENABLE [NOVALIDATE / VALIDATE(선택)] CONSTRAINT 제약조건이름;
[ NOVALIDATE : 제약 조건을 생성할 때 해당 제약 조건을 즉시 유효성 검사하지 않고 나중에 유효성을 검사하도록 지정한다. 예를 들어, 테이블에 새로운 외래 키 제약 조건을 추가하는 경우가 있다. 이 경우에 NOVALIDATE를 사용하면 해당 테이블에 이미 존재하는 데이터와 새로운 외래 키 제약 조건 사이에 충돌이 발생하지 않는지 확인하지 않고 제약 조건을 생성할 수 있습니다. 이후 데이터가 추가될 때나 테이블이 변경될 때 유효성 검사가 이루어진다. 유효성 검사를 유예할 경우 제약 조건이 생성되지만 해당 테이블에 이미 있는 데이터와 제약 조건 간의 충돌은 나중에 검사된다. 따라서 NOVALIDATE를 사용할 때는 주의해야 하며, 데이터베이스의 무결성이 보장되어야 하는 경우에는 주로 사용하지 않는다. - Chat GPT ]
제약조건의 제한을 일시적으로 풀어 주는 방법이 있다는 사실을 알아두자.
'DATABASE > CONSTRAINT : 제약조건' 카테고리의 다른 글
06. 데이터 형태와 범위를 정하는 CHECK (0) | 2024.03.26 |
---|---|
05. 다른 테이블과 관계를 맺는 FOREIGN KEY (0) | 2024.03.26 |
04. 유일하게 하나만 있는 값 PRIMARY KEY (0) | 2024.03.26 |
03. 중복되지 않는 값 UNIQUE (0) | 2024.03.26 |
02. 빈값을 허락하지 않는 NOT NULL (0) | 2024.03.23 |