728x90
1. 시퀀스 구문
create : CREATE SEQUENCE <seq_name>
nextval: nextval('seq_name')
currval: currval('seq_name')
setval: setval('seq_name', seq_val, [true/false])
drop: DROP SEQUENCE seq_name
아래 예제를 통해 더 알아보자. (시퀀스 이름은 my_seq으로 가정)
2. 시퀀스 사용법
1. 시퀀스 생성과 삭제
CREATE SEQUENCE my_seq;
DROP SEQUENCE my_seq;
2. 시퀀스 현재값과 다음값
SELECT currval('my_seq');
SELECT nextval('my_seq');
여기서 currval()을 사용하다가 다음과 같은 에러가 발생할 수 있다.
ERROR: 오류: "my_seq" 시퀀스의 currval 값이 현재 세션에 지정되어 있지 않습니다
SQL state: 55000
분명 생성은 했지만 currval()을 사용할 때 에러가 발생한다면
nextval()을 한번 실행해주고 다시 해주도록 하자.
3. 시퀀스 초기화
SELECT setval('my_seq', 1, true); -- nextval(my_seq') = 2
SELECT setval('my_seq', 1, false); -- nextval(my_seq') = 1
setval() 함수는 해당 시퀀스를 초기화 시켜주는 것인데 저기서 true/false의 역할은 다음과 같다.
true: 초기화 후 nextval을 사용할 때 초기화 된 값(1)에서 +1을 하여 사용된다.
false: 초기화 후 nextval을 사용할 때 초기화 된 값(1)을 그대로 사용한다.
4. 쿼리문으로 목록 가져오기
select n.nspname as sequence_schema, c.relname as sequence_name, u.usename as owner
from pg_class c join pg_namespace n on n.oid = c.relnamespace join pg_user u on u.usesysid = c.relowner
where c.relkind = 'S' and u.usename = current_user;
추후 해당 시퀀스를 테이블에서 사용 시,
테이블의 컬럼 Properties설정에서 'Default' 열에 위처럼 값을 넣어주면 된다.
nextval('my_seq'::regclass)
#References
반응형
'DataBase > PostgreSQL' 카테고리의 다른 글
[PostgreSQL] Port 변경 방법 (0) | 2022.06.04 |
---|---|
[PostgreSQL] pg_hba.conf / DB의 보안설정의 필요성 (0) | 2022.05.31 |
원격 호스트의 Postgresql 접속하기 (0) | 2022.01.23 |