Oracle/SQL Fundamentals I

11일차 # 9-32: CTAS

Bohemian life 2012. 4. 18. 20:40

 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자리가 같아도 가입할 수 있음