* UNIQUE 제약조건
해당 컬럼에 중복된 값이 들어가서는 안 될 경우
컬럼값에 중복값을 제한하는 제약 조건
삽입 / 수정시 기존에 있는 데이터값 중 중복값이 있을경우 오류 발생 !!
컬럼 레벨 방식
CREATE TABLE MEM_UNIQUE( -- 컬럼레벨방식
MEM_NO NUMBER NOT NULL,
MEM_ID VARCHAR2(20) NOT NULL UNIQUE,
MEM_PWD VARCHAR2(20) NOT NULL,
MEM_NAME VARCHAR2(20) NOT NULL,
GENDER CHAR(3),
PHONE VARCHAR2(13),
EMAIL VARCHAR2(50)
);
테이블 레벨 방식
CREATE TABLE MEM_UNIQUE(
MEM_NO NUMBER NOT NULL,
MEM_ID VARCHAR2(20) NOT NULL,
MEM_PWD VARCHAR2(20) NOT NULL,
MEM_NAME VARCHAR2(20) NOT NULL,
GENDER CHAR(3),
PHONE VARCHAR2(13),
EMAIL VARCHAR2(50),
UNIQUE (MEM_ID) --> 테이블 레벨 방식
-- NOT NULL(MEM_ID) --> NOT NULL은 컬럼레벨 방식밖에 안된다.
);
INSERT INTO MEM_UNIQUE VALUES(1, 'user01', 'pass01', '손흥민', null, null, null);
INSERT INTO MEM_UNIQUE VALUES(2, 'user01', 'pass02', '이강인', null, null, null);
--ORA-00001: unique constraint (DDL.SYS_C007131) violated
--> UNIQUE 제약조건에 위배되었음! INSERT 실패!!
--> 오류구문을 제약조건명으로 알려줌!! (특정 컬럼에 어떤 문제가 있는지 상세히 알려주지 않음!)
--> 쉽게 파악하기 어려움!!
--> 제약조건 부여시 제약조건명을 지정해주지 않으면 시스템에서 임의의 제약조건명을 부여해버림
INSERT INTO MEM_UNIQUE VALUES(2, 'user02', 'pass02', '이강인', null, null, null);
INSERT INTO MEM_UNIQUE VALUES(3, 'user03', 'pass02', '이승우', 'ㄴ', null, null);
--> 성별에 유효한 값이 아닌게 들어와도 잘 INSERT가 된다. => 이러면 안됨... 즉 check제약조건 사용해야 된다
제약조건 명 부여하는 방법
2023.07.24 - [IT/Oracle] - [Oracle] CONSTRAINT(제약조건)_제약조건명 부여
[Oracle] CONSTRAINT(제약조건)_제약조건명 부여
* 제약조건 부여시 제약조건명까지 지어주는 방법 > 컬럼 레벨 방식 CREATE TABLE 테이블명( 컬럼명 자료형 [CONSTRAINT 제약조건명]제약조건 컬럼명 자료형 ); > 테이블 레벨 방식 CREATE TABLE 테이블명{
e1jong.tistory.com
CHECK 제약조건 부여하는 방법
2023.07.27 - [IT/Oracle] - [Oracle] CONSTRAINT(제약조건)_CHECK
[Oracle] CONSTRAINT(제약조건)_CHECK
* CHECK(조건식) 제약조건 해당 컬럼에 들어올 수 있는 값에 대한 조건을 제시해둘 수 있음 해당 조건에 만족하는 데이터값만 담길 수 있음 CREATE TABLE MEM_CHECK( MEM_NO NUMBER NOT NULL, MEM_ID VARCHAR2(20) NOT NU
e1jong.tistory.com