현재 진행하던 프로젝트에서는 시퀀스로 id 등 생성하는 경우가 잦더라.
운영에서 테스트 종료 후 테스트 데이터 삭제 시에 시퀀스도 초기화 해줘야 했기에...
(근데 이럴 거면 첫 프로젝트 때 사용하던 방법인 현재 값 중 최고값 비교 후 그걸 사용하는 게 낫지 않나 싶기도...)
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
CREATE SEQUENCE my_seq;
DROP SEQUENCE my_seq;
SELECT CURVALL('my_seq');
SELECT NEXTVAL('my_seq');
SQL Error [55000]: 오류: "my_seq" 시퀀스의 currval 값이 현재 세션에 지정되어 있지 않습니다.
SELECT SETVAL('my_seq', 1, true); -- NEXTVAL('my_seq') = 2
SELECT SETVAL('my_seq', 1, false); -- NEXTVAL('my_seq') = 1