불친절한 블로그

[postgres] 기존 테이블에 auto increment 적용하기 본문

Project/레포트 자동화

[postgres] 기존 테이블에 auto increment 적용하기

오누! 2024. 2. 21. 17:07
반응형

파이썬을 이용해서 DB에 insert를 해야하는 상황이 왔다.

insert 해야하는 테이블에 인덱스 자동증가 설정을 하지 않았었다.

그래서 추가로 데이터를 넣을때마다 id에 인덱스 값을 넣어줬었는데,

몇 개월 지나고 나서 데이터를 추가하려니까

번거로운게 한두가지가 아니다.

 

auto increment를 적용하자!

우선 id값 없이 insert를 써봤다.

당연히 NotNull 에러를 띄운다.

 


처음으로 시퀀스를 추가해준다.

CREATE SEQUENCE '시퀀스명'

 

기존 테이블이 존재하니까

옵션을 바꿔주는 쿼리를 작성한다.

ALTER ['테이블명'] ALTER COLUMN id SET DEFAULT nextval('시퀀스명')

 

이제 자동으로 ID값이 지정되겠구나 하고 INSERT를 쳐봤다.

새로 만들어진 시퀀스이기 때문에 INSERT 요청할때 보내는

시퀀스값과 현재 테이블의 인덱스 값이 일치하지 않아서

다음과 같은 에러를 뱉었다.

 

현재 시퀀스 값을 확인해보자.

SELECT currval('시퀀스명')

 

테이블의 데이터 수를 확인해보자.

안맞으니까 에러를 뱉지... ㅠㅠ

select max(id) from ['테이블명']

 

맞추자.

select setval('시퀀스명',(select max(id) from ['테이블명']))

 

이제 INSERT 쿼리를 하게 되면 정상적으로 데이터가 삽입되는 것을 확인할 수 있을 것이다.

반응형
Comments