초기 _id 값이 21보다 큰 모든 레코드에 대해 Android SQLite 데이터베이스 테이블의 기본 정수 키 필드 (_id)를 1 씩 늘리려고합니다.테이블 아래쪽에서 위쪽으로 SQLite 쿼리 실행
나는 다음과 같은 시도 :
UPDATE tableName SET _id = _id+1 WHERE _id > 21
그러나 테이블에 첫 번째 업데이트 완료시, _id = (23)이 오류를 생성 2 개 기록이있다 (23-22 변경). 이 프로세스를 마지막 레코드에서 맨 처음으로 실행하여 문제를 피할 수있는 방법이 있습니까?
반대 프로세스 : UPDATE tableName SET _id = _id-1 WHERE _id > 21
은 _id = 21이 없으므로 오류없이 작동하므로 첫 번째 문과 관련된 문제는 확실히 ID가 두 배로 증가하는 것과 관련이 있습니다.
이 문제를 해결하기 위해 DESC 주문을 사용하려고합니다. 나의 현재 코드는 다음과 같은 그러나 그것은 올바른 구문이 아니다 이것은 마지막 기록 증가 :
UPDATE tableName SET _id = _id+1 WHERE _id = (SELECT _id FROM tableName WHERE _id > 21 ORDER BY _id DESC)
업데이트를 ID를 업데이트 하시겠습니까? – laalto
먼저 DESC 레코드를 가져 와서 루프에서 업데이트합니다. –
@laalto - 레코드가 삭제되어 데이터베이스에 간격이 생기고 올바르게 작동하려면 몇 가지 다른 코드 조각에 대해 연속적인 숫자가되도록 데이터베이스 ID가 필요합니다. –