오라클 테이블, NOT NULL 제약조건
컬럼의 값이 NULL일 수 없다는 제약조건 입니다(반드시 NULL이 아닌 값을 가져야 합니다).
컬럼 레벨로만 정의가 가능하며 NOT NULL도 기본값으로 지정할 수 있습니다. 테이블에 값을 INSERT할 경우 DEFAULT로 정의한 경우는 제외하고는 기본값이 NOT NULL인 컬럼은 반드시 컬럼을 기술하고 값도 지정해야 합니다.
실습
테이블을 생성할 때 NOT NULL, UNIQUE 제약조건을 기술하여 생성해 보고 이 두 제약조건이 기본키 제약조건과 같다는 것을 확인해 보는 실습 입니다.
id 컬럼에 NOT NULL + UNIQUE 제약조건을 기술하면서 테이블을 생성하고 딕셔너리 뷰를 통해 생성된 제약조건을 확인 합니다. 이 두 제약조건은 기본키로 동일한 역할을 하지만 제약조건을 조회하면 두개의 제약조건으로 조회 됩니다.
id number, namevarchar2(20) 2개의 컬럼을 가지는 T2 테이블을 생성하면서 기본 키를 지정하지 않습니다. 그대신 id 컬럼에 UNIQUE, NOT NULL 제약조건을 걸어줍시다. |
CREATE TABLE T2 ( ID NUMBER UNIQUE NOT NULL , NAME VARCHAR2(20) ); SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME = 'T2'; |
<실행결과>
| CONSTRAINT_NAME | CONSTRAINT_TYPE | TABLE_NAME |
1 | SYS_C007498 | C | T2 |
2 | SYS_C007499 | U | T2 |
UNIQUE 제약조건의 타입은 U입니다. NOT NULL 제약조건 타입은 C가 됩니다.
10.5.2 첫번째 실습에서 id 컬럼에 기본 키 제약조건을 기술한 뒤 USER_CONSTRAINTS 뷰를 통해 제약조건을 확인했을 때와 비교해보세요. 기본 키로 기술하면 제약조건의 타입이 P인 제약조건 하나만 조회됩니다.
NOT NULL + UNIQUE 제약조건이 PRIMARY KEY 제약조건과 동일한지 확인하세요. |
CREATE TABLE t2 ( ID NUMBER UNIQUE NOT NULL , NAME VARCHAR2(20), CONSTRAINT PK_T2 PRIMARY KEY (ID) ); |
<실행결과>
ORA-02261: 고유 키 또는 기본 키가 이미 존재하고 있습니다.
id에 NOT NULL + UNIQUE 제약조건을 걸고 나서 테이블 레벨 제약조건으로 id를 기본 키로 지정했더니 중복 정의 에러가 발생했습니다..
#NOTNULL, #제약조건, #오라클, #테이블, #ORACLE, #오라클교육
댓글 없음:
댓글 쓰기