2012-09-17 3 views
1

일부 자습서를 따라 iOS 앱에서 SQLite DB를 만들 수있었습니다. 나는 처음에 기본 키에 의존 할 것으로 예상했다. 당시 나는 SQLite에서 기본 키를 삭제하거나 다시 만들 수 없다는 것을 알지 못했고 이제는 내 앱이 거대하며 작동하려면 기본 키가 필요합니다.iOS 앱 및 테이블 ID의 SQLite DB

연습용으로 작업 관리자를 개발 중이며 DB에서 TableView로 직접 데이터를로드하고 있으며 행을 삭제할 때 기본 키 인덱스를 고정해야합니다.

내가 행이 숫자를 뛰어 삭제 한 후 기본 키 ID를 볼 수 있듯이
ID TXT STAT 
1 some_text 1 
2 some_text 1 
4 some_text 1 

, 어떻게 그것이 1 2 3 등을 할 수 있습니다 :

현재이 내가 행을 삭제할 때 발생하는 것입니다 ... 다시?

정말 많은 자원에 대한 해결책 만약 당신이 현재의 폐기물을 걱정하지 않는다, 이것은 단지 운동과 나는 작업이 필요합니다 (! 그리고이 실수를하지 않습니다 다시) D

감사합니다 .

답변

2

먼저 그 모든 중고 ID보다 큰 오프셋으로 모든 ID를 늘리

UPDATE mytab SET ID = ID + 1000 

그럼 최대 레코드 수에 ID를 설정이 하나

UPDATE mytab SET ID = (SELECT COUNT(*) FROM mytab t2 WHERE t2.ID <= mytab.ID) 

(첫 번째 UPDATE의 이유는 한 레코드의 새 ID가 다른 레코드의 이전 ID와 동일한 경우 충돌을 피하기위한 것입니다.

+0

문제가 해결되었습니다! 많은 감사합니다!! 고맙습니다;) – TCB13

+0

테이블의 자동 증가를 다음 숫자로 다시 바꿀 수있는 방법이 있습니까? – TCB13

+0

[sqlite_sequence] (http://www.sqlite.org/fileformat2.html#seqtab) 테이블을 수정합니다. –