SQLite를 쓸때 SQLiteDatabase의 insert() 메서드의 문서를 보게 되면


http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html


return 되는 long 값에 대해 -1이 return 될 경우 error 이며 그렇지 않을경우


삽입된 rowId가 리턴 된다고 되어 있습니다.


그런데 제가 ContentProvider를 사용할 일이 생겨 MeidaProvider.java를 참조하고자


소스코드를 읽고 있던 도중 


rowId = db.insert("audio_genres_map", "genre_id", values);

if (rowId > 0) {

newUri = ContentUris.withAppendedId(uri, rowId);

}


의 소스코드를 발견했는데요 문서에 적혀 있는걸로 생각해보면 if (rowId > -1) 이 되야 합니다.


그러나 다른 기타 프로젝트도 아니고 구글에서 직접 작성한 MediaProvider 에서  rowId > 0 인걸


보고 실험을 해보았는데 빈 테이블에 insert로 아이템을 추가 했을때 id가 1부터 기록 되더군요


0을 어떤 의미에서 비워둔건지 검색해봐도 마땅히 답이 없더군요 실제 insert가 어떤식으로 db


기록 작업을 하는지 SQLiteDatabase.java 소스코드를 봐도 해당 부분은 네이티브 메서드더군요


네이티브 메서드까지 뒤져볼까 하다가 포기 했습니다.


문서에 제대로 기록돼 있지 않은 내용 이기에 공유하고자 올립니다.



ps. http://www.sqlite.org/autoinc.html 해당 링크를 보면 ROWID 기록 방식이 1부터 라는군요