2013년 7월 29일 월요일

오라클12c특징(Oracle 12c) – Default Values for Table Columns(Using Sequence), 시퀀스를 이용한 default 값 정의

오라클12c(Oracle 12c) – Default Values for Table Columns(Using Sequence), 시퀀스를 이용한 default 값 정의 

오라클12c(Oracle 12c) – Default Values for Table Columns(Using Sequence), 시퀀스를 이용한 default 값 정의
오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷  실무전문 강의) 
Oracle 12c에서 발전된 Sequence를 사용한 Default Values에 대해 알아보자.
 
컬럼의 기본값(default value)로 오라클 시퀀스의 CURRVAL, NEXTVAL을 사용할 수 있게 되었는데 이를 이용하면 식별자 컬럼(PK)에 사용하면 유용할 것이다.
 
예제를 보고 이해하자.
 
CREATE SEQUENCE onj_seq start with 1 increment by 1;
 
CREATE TABLE myemp (
  empno          NUMBER DEFAULT onj_seq.NEXTVAL,
  name           VARCHAR2(10)
);
 
INSERT INTO myemp (name) VALUES ('1&오엔제이프로그래밍실무학원');
INSERT INTO myemp (empno, name) VALUES (999, '오엔제이프로그래밍실무학원 ');
INSERT INTO myemp (empno, name) VALUES (NULL, 'onjprogramming.co.kr ');
 
SELECT * FROM myemp;
 
    empno              name
---------- ------------------------------
         1  1&오엔제이프로그래밍실무학원
 999  오엔제이프로그래밍실무학원
            onjprogramming.co.kr
 
 
 
이  기능을 이용하면 Master, Detail 관계에서 자동으로 키 값을 생성하기에 좋다. 예제를 보자.
 
CREATE SEQUENCE m_seq;
CREATE SEQUENCE d_seq;
 
CREATE TABLE mydept(
  deptno          NUMBER DEFAULT m_seq.NEXTVAL,
  dname           VARCHAR2(30)
);
 
CREATE TABLE myemp (
  empno         NUMBER DEFAULT d_seq.NEXTVAL,
  deptno        NUMBER DEFAULT m_seq.CURRVAL,
  ename         VARCHAR2(30)
);
 
INSERT INTO mydept (dname) VALUES ('1번부서');
INSERT INTO myemp  (ename) VALUES ('오엔제이프로그래밍사원 1');
INSERT INTO myemp  (ename) VALUES ('오엔제이프로그래밍사원 2');
 
INSERT INTO mydept (dname) VALUES ('2번부서');
INSERT INTO myemp  (ename) VALUES ('오엔제이프로그래밍사원 3');
INSERT INTO myemp  (ename) VALUES ('오엔제이프로그래밍사원 4');
 
SELECT * FROM mydept;
 
   deptno  dname
---------- ------------------------------
         1 1번부서
         2 2번부서
 
 
 
SELECT * FROM myemp;
 
     empno     deptno ename
---------- ---------- ------------------------------
         1          1 오엔제이프로그래밍사원 1
         2          1 오엔제이프로그래밍사원 2
         3          2 오엔제이프로그래밍사원 3 
         4          2 오엔제이프로그래밍사원 4 
 
 
 

댓글 없음:

댓글 쓰기