2013년 11월 17일 일요일

[오라클12C,Oracle12C,SQL,identity,sequence]오라클12C 시퀀스,ID컬럼,GENERATED AS IDENTITY, ORACLE/오라클/구로디지털단지/교육/학원

[오라클12C,Oracle12C,SQL,identity,sequence]오라클12C 시퀀스,ID컬럼,GENERATED AS IDENTITY, ORACLE/오라클/구로디지털단지/교육/학원

oracle12c generated as identity란?
데이터베이스 테이블의 숫자로 된 unique key컬럼의 경우 기존 시쿼스등을 이용하여 자동증분 하게 했지만
오라클12C에서부터는 generated as identity로 정의하여 사용이 가능하다.

1. 먼저 기존 시퀀스를 이용한 방법을 보자.

SQL>create sequence emp_seq increment by 1 start with 1;
테이블 구조는 다음과 같다.
create table emp
 (emp_no number,
  ename varchar2(20));

insert문에서는 다음과 같이 사용했다.

SQL>Insert into emp values  (emp_seq.nextval, ‘홍길동’);

2. 이번에는 GENERATED AS IDENTITY 를 이용해보자.
 
 
테이블 만들 때 정의하면 된다.
 
create table emp
  (emp_no number generated as identity ,
   ename varchar2(20));

insert문장은 다음처럼 사용!
 
Insert into emp values (‘홍길동’);

만약 GENERATED AS IDENTITY로 선언한 컬럼에 값을 주면 아래와 같은 오류가 발생한다.

insert into emp values (1,'홍길동');
insert into test values (1,'홍길동')
*
ERROR at line 1:
ORA-32795: cannot insert into a generated always identity column

댓글 없음:

댓글 쓰기