Data base

CHECK

연93 2022. 10. 14. 16:32
-- CHECK
/*
컬럼에 입력되는 데이터를 체크해 특정 조건에 맞는 데이터만 입력 받고 그렇지 않으면 오류를 뱉어 낸다.

    CONSTRAINT 체크명 CHECK(체크조건)
*/
-- 제약조건객체도 데이터베이스 객체. 구성요소중 하나이다.
CREATE TABLE ex2_9 (
    num1     NUMBER 
        CONSTRAINTS check1 CHECK ( num1 BETWEEN 1 AND 9), -- 이름 생성없다면 CONSTRAINTS check1 빼기
    gender   VARCHAR2(10) 
        CONSTRAINTS check2 CHECK ( gender IN ('MALE', 'FEMALE'))        
); 

-- 앞의 CONSTRAINTS check1 제약이 생성되어 있으므로, 아래구문에서  CONSTRAINTS check1 제약조건으로 또 생성할수없다
CREATE TABLE ex2_9_2 (
    num1     NUMBER 
        CONSTRAINTS check1 CHECK ( num1 BETWEEN 1 AND 9),
    gender   VARCHAR2(10) 
        CONSTRAINTS check2 CHECK ( gender IN ('MALE', 'FEMALE'))        
); 



SELECT constraint_name, constraint_type, table_name, search_condition
  FROM user_constraints
 WHERE table_name = 'EX2_9';
 
 -- gender IN ('MALE', 'FEMALE')
INSERT INTO ex2_9 VALUES (10, 'MAN');   -- 'MAN' 에러

-- num BETWEEN 1 AND 9
INSERT INTO ex2_9 VALUES (10, 'MALE');  -- 10 에러

INSERT INTO ex2_9 VALUES (5, 'FEMALE'); --성공