--UNIQUE : 지정컬럼의 중복을 허용하지 않음
-- UNIQUE는 2개이상 지정 가능
-- NULL을 허용할 수 있지만 NULL인 자료는 하나만 존재해야 함
-- UNIQUE 컬럼레벨로 지정
CREATE TABLE 테이블명(
컬럼명 타입 CONSTRAINT 제약조건이름 UNIQUE
:
:
);
-- UNIQUE 테이블레벨로 지정
CREATE TABLE 테이블명 (
컬럼명 타입
:
:
,CONSTRAINT 제약조건이름 UNIQUE(컬럼명)
);
--확인
SELECT * FROM USER_CONSTRAINT;
SELECT * FROM USER_CONS_COLUMNS;
--이미 존재하는 테이블에 UNIQUE
ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건이름 UNIQUE (컬럼명);
--UNIQUE 제거
ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건이름;
EX )
CREATE TABLE test1(
id VARCHAR2(20)
,name VARCHAR2(20) NOT NULL
,ssn VARCHAR2(20)
,CONSTRAINT pk_test1_id PRIMARY KEY(id)
,CONSTRAINT un_test1_ssn UNIQUE (ssn)
);
SELECT * FROM USER_CONSTRAINT;
SELECT * FROM USER_CONS_COLUMNS;
INSERT INTO test1(id,name,ssn)VALUES('1','a','1');
INSERT INTO test1(id,name,ssn)VALUES('2','a','null'); --null을 이용해서 가능, null 중복가능
INSERT INTO test1(id,name,ssn)VALUES('3','c','2');
INSERT INTO test1(id,name,ssn)VALUES('3','c','1'); -- unique 제약조건 위반 에러
INSERT INTO test1(id,name,ssn)VALUES('4','d','3');
INSERT INTO test1(id,name,ssn)VALUES('5','a','null');
COMMIT;
SELECT * FROM test1;
'오라클 > 제약조건' 카테고리의 다른 글
참조키(외래키, FORIGN KEY) (0) | 2013.06.11 |
---|---|
제약조건 DEFAULT 디폴트 (0) | 2013.06.01 |
제약조건 NOT NULL (0) | 2013.06.01 |
제약조건 CHECK (0) | 2013.06.01 |
제약조건 PRIMARY KEY 기본키 (0) | 2013.06.01 |