본문 바로가기

데이터베이스/SQLite3

[SQLite3] AUTOINCREMENT 를 초기화하는 방법

반응형

 

AUTOINCREMENT 로 설정된 값을 저장하는 테이블과 접근방법(초기화 방법)

SQLite3 는 경량화된 데이터베이스라서 그런지, 기본적으로 자동증가된 기본키를 초기화시키는 명령어가 별도로 존재하지 않는다. 따라서, SQLite 에서 이를 초기화하려면, 해당 값을 저장하고 있는 테이블에 직접 접근하여 제거해줄 수 밖에 없다.

 

SQLite3 에서 SQLite  스튜디오와 같은 프로그램을 사용하여 AUTOINCREMENT 를 기본키(Primary Key) 에 적용했다면, 해당 자동증가된 값은  "sqlite_sequence" 이라는 별도의 테이블에 저장되는데 이 때, 저장되는 테이블 구조를 간략하게 표현해보면 다음과 같다.

 

<sqlite_sequence>

name seq
테이블이름 시퀸스번호

 

 

즉, 위 테이블에서 name 과 일치하는 seq 의 값을 1로 지정한다면, 초기화할 수 있다. 이를 설정하는 SQL(DML) 을 다음처럼  UPDATE SET ~WHERE  을 사용하여 작성하면된다. 

 

UPDATE sqlite_sequence 
SET seq=1 
WHERE name ="table_name"

 

UPDATE 는 특정 테이블의 Row 를 수정할 때 사용되는 데이터 조작어 이며, SET 는 수정할 값을, WHERE 은 수정할 대상이 되는 컬럼과 그 값을 지정한다. 이렇게 되면, seqlite_sequence 테이블에서 name 컬럼의  row 가  table_name 인 경우 seq 컬럼의 row 에 설정된 데이터(엑셀로 따지면 하나의 셀을 의미) 를 1 로 설정하게 된다.

 

참고자료

https://sqlite.org/forum/info/a42ca36f0eea96c1

 

SQLite Forum: How to reset auto increment on DB browser

Hello all i am trying my best to reset the auto-increment on DB browser but coming up with multiple santex errors, ALTER TABLE User AUTOINCREMENT = 1 error log, ALTER TABLE User AUTOINCREMENT -- Result: near "AUTOINCREMENT": syntax error -- EXECUTING ALL I

sqlite.org

 

반응형