티스토리 뷰

출처  : https://hotte.tistory.com/m/2

Incremental Unique Key Sequence 를 생성하기 위해

PostgreSQL , ORACLE 은 SEQUENCE 라고 불리는 독립 오브젝트를 제공하며,

SQL-Server , Sybase 은 컬럼에 IDENTITY 속성을,

MySQL 은 컬럼에 AUTO_INCREMENT 속성을 사용한다.

이번 포스팅에서는 PostgreSQL 에서 SEQUENCE 오브젝트 관련 Function 을
정리하고 활용 예제를 작성해 보도록 하겠다.

SEQUENCE 관련 주요 Function 정리
nextval(seq_name) - 시퀀스 값을 증가시키고 리턴한다.
currval(seq_name) - 가장 최근 nextval 함수를 호출하여 얻은 값을 리턴한다. 현재 세션에서 nextval 을 호출하지 않았을 경우 오류를 반환한다.
select currval('seq_student');

********** Error **********
ERROR: currval of sequence "seq_student" is not yet defined in this session
SQL state: 55000
setval(seq_name, value) - 시퀀스의 현재값을 특정값(value)으로 초기화 한다.
시퀀스 생성
CREATE SEQUENCE seq_student START 1;
CASE 1. 테이블 생성시 ID 컬럼에 DEFAULT 속성 부여
-- 테이블 생성
CREATE TABLE student
(
  id integer DEFAULT nextval('seq_student'),
  name varchar(50),
  eml varchar(100),
  birthday char(8),
  gender char(1),
  constraint pk_student primary key (id)
);

-- 데이터 입력 (id 컬럼은 INSERT 컬럼에서 제외한다.)
INSERT INTO student (name,eml,birthday,gender)
VALUES ('홍길동','hgd@mail.com','18830101','M');

INSERT INTO student (name,eml,birthday,gender)
VALUES ('이순신','lss@mail.com','16830201','F');

INSERT INTO student (name,eml,birthday,gender)
VALUES ('유관순','ygs@mail.com','19030301','M');

INSERT INTO student (name,eml,birthday,gender)
VALUES ('임꺽정','lgj@mail.com','15830401','F');
CASE 2. DEFAULT 속성을 쓰지 않고 INSERT 시점에 VALUE 로 입력
-- 테이블 생성
CREATE TABLE student
(
  id integer,
  name varchar(50),
  eml varchar(100),
  birthday char(8),
  gender char(1),
  constraint pk_student primary key (id)
);

-- 데이터 입력
INSERT INTO student (id,name,eml,birthday,gender)
VALUES (nextval('seq_student'),'홍길동','hgd@mail.com','18830101','M');

INSERT INTO student (id,name,eml,birthday,gender)
VALUES (nextval('seq_student'),'이순신','lss@mail.com','16830201','F');

INSERT INTO student (id,name,eml,birthday,gender)
VALUES (nextval('seq_student'),'유관순','ygs@mail.com','19030301','M');

INSERT INTO student (id,name,eml,birthday,gender)
VALUES (nextval('seq_student'),'임꺽정','lgj@mail.com','15830401','F');

'Skill > postgreSQL' 카테고리의 다른 글

postgresql CTE  (0) 2024.10.11
postgresql] column명과 type조회  (0) 2024.09.20
postgresql DDL  (0) 2024.08.23
postgresql 목록 갯수  (0) 2024.08.22
postgresql 집계함수 사용  (0) 2024.04.03
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함