본문 바로가기

SQL

(Tibero7) - auto increment 처럼 sequence 사용하기

반응형

🍳머리말

tibero는 auto increment와 비슷하게 동작하는 sequence를 지원합니다.


📕 예제1

📔 schema

  📑 sequence 생성

CREATE SEQUENCE TEST_SEQ;

📑 table 생성

CREATE TABLE TEST (
  ID NUMBER DEFAULT TEST_SEQ.NEXTVAL PRIMARY KEY,
  name varchar(255)
);

📑 data 삽입

ID의 default값이 seq.nextval이므로 insert into문에서 column을 명시하지 않아도 자동으로 nextval이 들어갑니다.

INSERT INTO test(name) values('why?');

📑 확인

SELECT * FROM test

📑 되지 않는 경우

default 값을 ddl에 명시 하지 않는 column은 insert into에서 해당 column 생략이 불가합니다. 다음처럼 값을 생략했으므로  constraint violation이 뜨게 됩니다.

 

CREATE SEQUENCE TEST2_SEQ;

CREATE TABLE TEST2 (
  ID NUMBER PRIMARY KEY,
  name varchar(255)
);

INSERT INTO test2(name) values('sequence!');


📕 예제2

📔 schema

이를 한꺼번에 해주는 keyword가 있습니다. 'GENERATED AS IDENTITY'입니다. 바로 만들어보죠

📑 table 생성

CREATE TABLE test_identity (
  id   NUMBER GENERATED AS IDENTITY primary key,
  name VARCHAR(30)
);

내부적으로 sequence를 생성해주며 table drop시 sequence도 함께 제거되는 편리한 기능입니다.

📑 내부 sequence확인

SELECT * FROM user_objects WHERE OBJECT_TYPE LIKE 'S%' ORDER BY created desc;

이렇게 table만 생성했는데도 sequence가 생성되었습니다.

 

📑  table drop 해보기

DROP TABLE test_identity;

상기 sql을 실행해 생성된 sequence 조회시 해당 sequence가 사라진 것을 확인할 수 있습니다.


*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.