[SQLite] AUTOINCREMENT Keyword 설명

By lhcsoft - 1월 31, 2020

안녕하세요.
SQLite의 AUTOINCREMENT에 대해서 간략히 설명합니다.

아래와 같이 table을 생성한다고 가정해보자.

CREATE TABLE movie (
    movie_id INTEGER PRIMARY KEY AUTOINCREMENT,
    title TEXT,
    number_of_audience INTEGER    
}

그리고, 아래와 같이 insert를 한다.

INSERT INTO movie (title, number_of_audience) VALUES('Star Wars', '1000')

그러면, insert된 레코드의 movie_id 값으로 1이 자동 할당된다.
바로 AUTOINCREMENT 설정을 했기 때문이다.

다시 한번 아래와 같이 insert를 한다.

INSERT INTO movie (title, number_of_audience) VALUES('iron man', '2000')

그러면, insert된 레코드의 movie_id 값으로 2이 자동 할당된다.
역시 AUTOINCREMENT 설정을 했기 때문이다.

참고로, AUTOINCREMENT keyword를 가진 테이블(상기 예제의 movie)을 생성하면, SQLite는 내부적으로 "sqlite_sequence" 테이블에 가장 큰 ROWID 값을 저장합니다.
이 값을 활용하여 insert할때 증분하는 것 같다.



그럼, 상기 테이블에서 PK가 아닌 필드(number_of_audience)에 대해 AUTOINCREMENT 속성을 주고 싶다면 어떻게 해야 할까?

SQLite의 function 기능을 아래와 같이 이용하면 가능하다.

INSERT INTO movie (title, number_of_audience) VALUES('iron man', (SELECT IFNULL(MAX(number_of_audience), 0) + 1 FROM movie))

위 내용은 개인적으로 검토한 내용이므로 참고만 하시기 바랍니다.

감사합니다.

  • Share:

You Might Also Like

0 개의 댓글