postgresql 에서 auto increment 재설정 하는 방법

Updated on

가끔 그냥 DB에서 직접 데이터를 넣거나, 아니면 DB Seed 를 통해서 데이터를 넣는 경우가 있는데

이때 Postgres의 경우 Auto increment Id 를 재설정 해줘야만 한다.

SELECT setval(pg_get_serial_sequence('users', 'id'), coalesce(max(id)+1, 1), false) FROM users

그때 사용할 수 있는 sql 질의이다.

이것을 DB::Seed sql 질의 하단에 넣어주거나 하는 방식으로 설정할 수 있다.

자 여기서, 모르고 시퀀스를 삭제한 경우도 있을 텐데, 이때 추가하는 방법에 대해서 알아보자 !

CREATE SEQUENCE event_queues_id_seq;
ALTER TABLE event_queues ALTER COLUMN id SET DEFAULT nextval('event_queues_id_seq');
ALTER SEQUENCE event_queues_id_seq OWNED BY event_queues.id;
SELECT setval(pg_get_serial_sequence('event_queues', 'id'), coalesce(max(id)+1, 1), false) FROM event_queues

이렇게 시퀀스 생성 후 id 값으로 연결해주고, 마지막에 id 값을 재설정해주면 된다 !