PostgreSQL | Sequence 활용하기

시퀀스 생성

CREATE SEQUENCE [시퀀스명];

시퀀스명 변경

ALTER SEQUENCE [기존 시퀀스명] rename to [새 시퀀스명];

시퀀스 목록

SELECT c.relname FROM pg_class c WHERE c.relkind = 'S';

시퀀스 삭제

--  seq_foo를 삭제한다.
DROP SEQUENCE sequence seq_foo;

시퀀스 초기화

drop table tbl_ttt_seq;
drop sequence seq_ttt;

시퀀스 현재값 변경

SELECT setval('시퀀스명', 원하는값);

시퀀스 확인

SELECT * FROM pg_class where relkind = 'S';

테이블 생성

CREATE TABLE tbl_ttt_seq 
(
    seq int not null default nextval('seq_ttt')
,   a varchar(10)
);

– 테이블 삭제시 자동 시퀀스 삭제 처리 – 이거 안하면 테이블 삭제 후에도 존재

ALTER SEQUENCE seq_ttt OWNED BY tbl_ttt_seq.seq; 

데이터 입력

insert into tbl_ttt_seq (a) values ('aaa');
insert into tbl_ttt_seq (a) values ('bbb');
insert into tbl_ttt_seq (a) values ('ccc');
insert into tbl_ttt_seq (a) values ('ddd');
insert into tbl_ttt_seq (a) values ('eee');

select * from tbl_ttt_seq;

시퀀스 현재값 확인

select currval('seq_ttt'), nextval('seq_ttt');

시퀀스 변경

select setval('seq_ttt', 55);

시퀀스 의존성 체크

SELECT p.relname, a.adsrc FROM pg_class p JOIN pg_attrdef a ON (p.relfilenode = a.adrelid) WHERE a.adsrc ~ ‘seq_ttt’;

사용중인 시퀀스 삭제

alter table tbl_ttt_seq alter column seq set default null;

drop sequence seq_ttt;

출처: http://dbrang.tistory.com/784 [dBRang]