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]
최종 수정 : 2020-11-12