less than 1 minute read

❤️ Postgresql 기준으로 작성된 예시입니다.

기존 존재하는 테이블에 auto_increment 적용 컬럼 추가하기

/* 시퀀스 생성 */
CREATE SEQUENCE {시퀀스명};

/* 적용 */
ALTER TABLE {테이블명}
ALTER COLUMN {테이블명}
SET DEFAULT nextval('{시퀀스명}');

Example)

CREATE SEQUENCE id_seq;

ALTER TABLE analytics.etf_cat 
ALTER COLUMN id 
SET DEFAULT nextval('id_seq');

적용 후 테스트 데이터를 삽입했다. (id 컬럼이 auto_increment)

INSERT INTO analytics.etf_cat(id, code, name, region, asset)
VALUES (default, '000001', 'test', 'test','test');

결과는 다음과 같다.

|id  |col1|col2|
|----|----|----|
|500 | ....|....|
|501 | ....|....|
|1   |.....|....|
|2   |.....|....|
....

문제점 기존에 500번까지 있었는데 삽입된 데이터는 다시 1번부터 시작. DEFAULT 값이 1부터 시작하는 시퀀스기 때문이라 예상한다.

Seqence 초기화

테스트를 위해서 auto-increment 컬럼에 2개의 데이터를 Insert 후 delete 했고 그 후 다시 데이터를 넣었을 때 1로 시작하지 않고 3으로 시작한다. 즉 시퀀스 메모리에 이러한 순서들이 저장되어 관리되는 것 같다.

ALTER SEQUENCE {시퀀스 이름} RESTART WITH {초기화 값};