SQL/ORACLE SQL

제약 조건 : CHECK, DEFAULT

HicKee 2022. 11. 10. 13:30

CHECK

칼럼에서 허용 가능한 데이터의 범위나 조건을 정의하여 설정된 값만 허용함

설정된 이외의 값이 들어오면 오류 메시지와 함께 명령을 수행하지 못하게 함

 

CHECK 제약 조건의 수는 제한이 없다

CURRVAL, NEXTVAL, ROWNUM 같은 의사 칼럼 SYSDATE, USER와 같은 함수에는 사용 못함 

 

사용법

CREATE TABLE [테이블명](
[칼럼명] [데이터 형식] CONSTRAINT [제약조건명] CHECK (조건)
);

예제

CREATE TABLE EMP_SECOND(
ENO NUMBER(4) CONSTRAINT EMP_SECOND_ENO_PK PRIMARY KEY,
ENAME VARCHAR2(10),
SALARY NUMBER(4) CONSTRAINT EMP_SECOND_SALARY_MIN CHECK (SALARY >0));
CREATE TABLE CUSTOMER_2 (
ID VARCHAR2(20) NOT NULL CHECK(ID NOT IN(' ')) PRIMARY KEY,
PWD VARCHAR2(20) NOT NULL CHECK(PWD NOT IN(' ')),
NAME VARCHAR2(20) NOT NULL CHECK(NAME NOT IN(' ')),
PHONE VARCHAR2(30),
ADDRESS VARCHAR2(100));

오류 보고 : ORA-02290: 체크 제약조건(TEST.SYS_C007324)이 위배되었습니다

INSERT INTO customer_2 VALUES (' ',' ',' ','010-111-1111','SEOUL');

DEFAULT 

어떤 값도 입력하지 않았을 때 DEFAULT 값이 입력됨

 

예제

CREATE TABLE EMP_SECOND(
ENO NUMBER(4) CONSTRAINT EMP_SECOND_ENO_PK PRIMARY KEY,
ENAME VARCHAR2(10),
SALARY NUMBER(7,2) DEFAULT 1000);
INSERT INTO EMP_SECOND (ENO,ENAME) VALUES (1111,'앤디');

 

오류 : ORA-00947: 값의 수가 충분하지 않습니다

INSERT INTO EMP_SECOND VALUES (1111,'앤디');

칼럼명을 명시하지 않을 경우 모든 데이터를 입력해야 한다

 

 

'SQL > ORACLE SQL' 카테고리의 다른 글

PL/SQL : 변수 선언  (0) 2022.11.11
VIEW : 뷰  (0) 2022.11.10
제약 조건 : FOREIGN KEY (외래 키 또는 참조 키)  (0) 2022.11.09
제약 조건 : PRIMARY KEY (기본 키)  (0) 2022.11.09
제약 조건 : NOT NULL, UNIQUE  (0) 2022.11.09