MySQL 에 auto_increment 라는 컬럼 키워드가 있습니다. 데이터가 들어올때마다 자동으로 시리얼 번호를 붙여주는 기능입니다.
Oracle 에도 이런 똑같은 기능이 12.1 버전부터 생겼습니다.
create table TEMP_AUTO (
col_id number generated as identity,
col_text varchar2(50)
);
위와 같이 generated as identity 키워드를 붙여주면 MySQL 의 auto_increment 와 똑같은 동작을 합니다.
아래와 같이 TEMP_AUTO 테이블에 데이터를 Insert 할때, col_id 컬럼을 넣지 않으면 자동으로 순차번호가 부여되어 Insert 됩니다.
insert into TEMP_AUTO (col_text) values ('aaaaaa1');
insert into TEMP_AUTO (col_text) values ('aaaaaa2');
insert into TEMP_AUTO (col_text) values ('aaaaaa3');
insert into TEMP_AUTO (col_text) values ('aaaaaa4');
insert into TEMP_AUTO (col_text) values ('aaaaaa5');
col_id 컬럼에 1번부터 순차적으로 번호가 부여된 것을 확인할 수 있습니다.
앞에서는 매우 단순하게 사용했는데, 다양한 설정도 가능합니다.
시작값을 1부터 시작했는데, 다른 값부터 시작할 수 있고, 증가분도 1씩 증가가 아니라 더 큰 값으로 지정할 수 있습니다.
위의 Syntax 를 보면 오라클 시퀀스(Sequence)와 매우 비슷한 것을 알 수 있습니다.
실제로, 이게 내부적으로 시퀀스를 생성해서 사용합니다.
위 Syntax 를 활용해서 몇가지 샘플을 만들어 봤습니다.
create table TEMP_AUTO (
col_id number generated always as identity,
col_text varchar2(50)
);
-- 이건 위와 똑같습니다. generated 뒤에 always / by default 가 나올 수 있는데, always 가 기본입니다.
-- always 는 반드시 사용해야 함을 의미합니다. 즉, 임의의 값으로 지정해서 넣을 수 없습니다.
-- 아래처럼, col_id 에 임의로 값을 넣을 수가 없습니다.
-- SQL> insert into TEMP_AUTO (col_id, col_text) values (33, 'aaaaaa5');
-- ORA-32795: cannot insert into a generated always identity column
2)
create table TEMP_AUTO (
col_id number generated by default as identity,
col_text varchar2(50)
);
-- by default 로 지정하면, col_id 에 임의의 값을 지정해서 넣을 수 있습니다.
3)
create table TEMP_AUTO (
col_id number generated by default as identity (start with 30 increment by 10),
col_text varchar2(50)
);
-- 30부터 시작해서 10씩 증가시키면서 번호를 부여합니다.
이 Auto Increment 컬럼은 내부적으로 시퀀스를 이용하기 때문에 테이블 생성할때 시퀀스도 자동으로 함께 만들어집니다.
테이블을 삭제하면 시퀀스도 자동으로 삭제됩니다.
'IT관련' 카테고리의 다른 글
오라클 에러 정보 (ORA-01000) - maximum open cursors exceeded (0) | 2021.01.25 |
---|---|
Oracle 샘플 테스트 데이터 생성 프로그램 다운로드 (Data Maker) (5) | 2021.01.19 |
오라클 정규표현식 함수 regexp_replace 샘플예제 (날짜 포맷 변경하기 SQL문) (0) | 2020.12.10 |
오라클 정규표현식 함수 regexp_replace 샘플예제 (Email 주소에서 @앞부분만 다른 문자열로 바꿔치기 SQL문) (0) | 2020.12.10 |
오라클 정규표현식 함수 regexp_replace 샘플예제 (문자열 바꿔치기, 치환) (0) | 2020.12.10 |