프로그래밍/DB

postgresql - 시퀀스 초기화하기 (nextval 사용 이슈)

kugancity 2018. 5. 17. 16:50
반응형







postgresql 에서 간혹 테이블 구조를 복사하고 새로 데이터를 입력할 경우 

id를 mysql의 auto increment에 해당되는 postgres의 nextval 함수를 사용해서 자동 증가 시킬경우  

예전 테이블 id의 최대값에 이어서 값이 증가될 때가 있다. 


예전 테이블 구조를  복사하면서 이전 테이블의 시퀀스 값이 id 증가에 사용이 되서 발생하는 일이다. 


예시 ) 

예전 테이블의 시퀀스 아이디 값에서 증가 되고 있을 경우 id nextval 설정




그럴 경우 새로운 테이블의 시퀀스를 아래와 같이 만들어 줘야 함 


디비이름# create sequence table2_id_seq;

CREATE SEQUENCE


아니면 테이블을 비우고 나서 다시 데이터를 입력할 때도 같은 현상이 일어 날 때가 있다. 

이럴 경우 시퀀스의 값을 아래와 같이 1로 재설정 해준다. 



디비이름# select setval('table2_id_seq',1,false); # 시퀀스가 1부터 시작하도록 설정


여기서 false는 설정값 다음부터 시작하는지 여부를 결정한다. true이면 2부터 시퀀스 값이 시작한다. 




참고: http://www.postgresdba.com/bbs/board.php?bo_table=B10&wr_id=28




728x90
반응형