SQL/Postgresql
Sequence
아직미정임
2022. 3. 12. 13:16
시퀀스 생성
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
여기서 currval()를 사용하다가 다음과 같은 에러가 발생할 수 있다.
ERROR: 오류: "mine_seq" 시퀀스의 currval 값이 현재 세션에 지정되어 있지 않습니다
SQL state: 55000
분명히 생성은 했지만 currval()를 사용할때 에러가 발생한다면
당황하지 말고 nextval()를 한번 실행해주고 다시 해주도록하자 그럼 정상적으로 작동하는것을 볼 수 있다.
시퀀스 초기화
SELECT setval('mine_seq', 1, true); -- nextval('mine_seq') = 2
SELECT setval('mine_seq', 1, false);-- nextval('mine_seq') = 1
setval() 함수는 해당 시퀀스를 초기화 시켜주는 것인데 저기서 true/false의 역할은 다음과 같다.
true : 초기화 후 nextval를 사용할때 초기화된 값(1)에서 +1을 하여 사용된다.
false : 초기화 후 nextval를 사용할때 초기화된 값(1)을 그대로 사용한다.
pgAdmin에서 생성한 시퀀스 목록 가져오기
Servers > [개인 지정 이름] > Databases > [특정 데이터베이스] > Schemas > Sequences
경로로 들어가주면 확인이 가능하다.