create table e4
as
select * from e1;
select table_name, constraint_name, search_condition
from user_constraints
where table_name in ('E1', 'E4');
==> CTAS로 테이블을 생성하면 NOT NULL 제약조건만 복사됩니다.
따라서 다른 제약조건은 새로 생성해 주어야 합니다.
(alter table e4 modify (...) 이용)
# 반드시 테이블 레벨 제약조건을 사용해야하는 경우?
create table member1 (
name varchar2(20) not null,
birth number(6) unique,
jcode number(7) unique);
insert into member1 values ('James', 120111, 3234567);
insert into member1 values ('Smith', 120111, 4234567);
==> 오류: ORA-00001: 무결성 제약 조건(MVP20.SYS_C0023754)에 위배됩니다
==> 엉터리: 생년월일이 같은 이성이 가입할 수 없음
create table member2 (
name varchar2(20) not null,
birth number(6),
jcode number(7),
constraint memeber2_jumin_uk unique(birth, jcode));
insert into member2 values ('James', 120111, 3234567);
insert into member2 values ('Smith', 120111, 4234567);
select * from member2;
==> 제대로: 생년월일이 같거나 주민코드 7자리가 같아도 가입할 수 있음
'Oracle > SQL Fundamentals I' 카테고리의 다른 글
12일차 #10-4: View 란? (0) | 2012.04.19 |
---|---|
11일차 # 9-35: 테이블 삭제 (DROP TABLE) (0) | 2012.04.18 |
11일차 # 9-27: FOREIGN KEY constraints (0) | 2012.04.18 |
11일차 # 9-17: Constraints (0) | 2012.04.18 |
11일차 # 9-14: Interval (0) | 2012.04.18 |