Auto_increment 추가
❤️ 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 {초기화 값};