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

+ Recent posts