C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[835] SQLite에서 자동증가 필드 만들기.
김태선 [cppbuilder] 13179 읽음    2008-12-31 17:13
Embeded DB나 로칼 DB로 유용하게 사용되는 SQLite는
파이어버드처럼 완전히 License Free라는 장점이 있습니다.

SQLite Expert Personal  같은 GUI 관리툴도 공짜로 얻을 수 있죠.

그런데 자동 증가 필드(Autoincrement Field)를 어떻게 만들면 될까요?
관리 툴에서 만들려고 해도 잘 안만들어 집니다.

코딩으로는 다음과 같이 만들수 있습니다.

create table tt (rec integer primary key autoincrement, name char(20));

그런데 관리툴에서는 SQL 문장외에 관리 툴에서 제공하는 방법으로
primary 키의 autoincrement 를 세팅 시킬 수 없습니다.
아마도 Personal 버전이라서 제한을 해 놨는지 모르겠는데...

하지만 이런식으로 만들수는 있습니다.

CREATE TABLE [ddd] (
  [rec] INTEGER PRIMARY KEY,
  [age] INT(5),
  [name] CHAR(22));

autoincrement 지시자를 주지 않아도 rec는 자동증가 필드로 동작하게 됩니다.
관리 툴에서 만드는 방법은
integer 형 필드를 만들고 그 크기를 0으로 주면 됩니다. 그리고 primary key로 등록해 주면 됩니다.

Insert into ddd values(null, 40, '이순신');

식으로  데이타를 넣으면 rec 필드에는 자동으로 값이 들어가게 됩니다.

그런데, SQLite3 에서는 굳이 자동증가 필드를 만들지 않아도

select rowid from ddd where age = 40;

식으로 rowid 키워드를 통해 해당 레코드의 물리적인 레코드 번호를 알수 있습니다.
그러므로 간단한 일상적인 용도의 단순 레코드 번호 매기기 용이라면,
굳이 설정하지 않고 사용해도 됩니다.
rowid 라는 필드가 마치 있는 것처럼 다루어도 된다는  뜻 입니다.

그럼.

+ -

관련 글 리스트
835 SQLite에서 자동증가 필드 만들기. 김태선 13179 2008/12/31
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.