반응형
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
반응형