반응형

짧은 답변 컬럼을 숫자타입(INTEGER)의 프라이머리키로 정의하면 자동증가 할 것이다.

긴 답변 : 만약 당신이 테이블의 컬럼을 숫자타입의 프라이머리키가 되도록 정의를 한다면, 테이블의 컬럼에 NULL을 입력할때 마다, NULL이 자동으로 그 이 테이블의 그 클럽을 통틀어서 가장 큰 값보다 큰 하나의 숫자나 만약에 테이블이 비어 있다면 1로 변환될 것이다.

(만약에 가장 크게 가능한 숫자타입의  키, 9223372036854775807, 그 후에는 사용되지 않는 키 벨류가 랜덤으로 선택 될 것이다.)

예를 들어, 당신이 다음과 같은 테이블을 정의한다면 :

CREATE TABLE t1(
  a INTEGER PRIMARY KEY,
  b INTEGER
);

이 테이블에서 이 문장

INSERT INTO t1 VALUES(NULL,123);

은 다음 문장과 같은 의미를 지닌다.

INSERT INTO t1 VALUES((SELECT max(a) FROM t1)+1,123);

이것은 가장 최근의 입력 동작을 위한 숫자타입 키를 반환하는 sqlite3_last_insert_rowid() 함수 이다.

숫자타입 키는 가장큰키를 만났을때 테이블에서 단지 이전에 입력한 값이라는 것에 주의 하라.

새로운 키는 현재의 테이블의 키를 통틀어서 유일할 것이다. 그러나 그것은 테이블에서 이전에 지워진 키값이다.

키를 생성하는 것은 테이블이 살아 있는 동안 유일하다. AUTOINCREMENT 키워드를 숫자타입 프라이머리 키 정의에 추가할 경우에

키 선택이 있은 후에는 테이블 안에 존재하는 가장 큰 키보다 더 클 것이다.

만약 가장 큰 키 값이 테이블에서 이전에 존재하는 값이라면 입력작업은 SQLITE_FULL 에러 코드와 함께 실패할 것이다.

반응형

'DATABASE > SQLite' 카테고리의 다른 글

SQLite 버젼 3의 자료형(DataTypes)  (0) 2012.06.29
[FAQ/SQLite] SQLite는 어떤 데이터타입을 지원합니까?  (0) 2008.08.26
SQLite 소개  (0) 2008.08.24
SQLite 특징들  (0) 2008.08.21
SQLite 메인페이지 번역  (0) 2008.08.21

+ Recent posts