2011-10-23 3 views
1

내 iPhone 앱에서 FMDB를 사용하고 있으며 테이블의 행 수를 특정 값으로 제한하려고합니다. 새 레코드를 삽입 할 때마다 maxNumberOfEntries가 초과되었는지 확인하고 가장 오래된 항목을 삭제합니다.'LIMIT'을 사용하여 테이블에서 행을 삭제하는 방법

(...)   
[db beginTransaction]; 
[db executeUpdate: @"DELETE FROM table_name WHERE someId = ? ORDER BY date LIMIT 10", [NSNumber numberWithInt: 123], nil]; 
[db commit]; 
(...) 

하지만 SQLite는 쿼리의 "LIMIT"part의를 인식하지 못하는 것처럼 보인다 : 나는 다음을 시도했다. 삭제할 항목을 직접 지정하지 않고 표의 특정 행을 삭제하는 방법은 무엇입니까?

+0

LIMIT start, range 첫 번째 30 개를 삭제하려면 LIMIT 0,30을 수행하십시오. 첫 번째를 유지하면서 30을 계속 삭제하려면 LIMIT 1,30이 아니라 LIMIT 1,31 –

+0

이 작동하지 않습니다. limit-part 없이는 someId = 123 인 모든 항목을 삭제합니다. 아무 것도 삭제하지 않습니다. – rindeastwood

+0

이 문제가 해결 되었습니까? – bryanmac

답변

1

나는 이것을 시도하지는 않았지만 관련이있을 수 있습니다.

여기 http://sqlite.org/compile.html#enable%5Fupdate%5Fdelete%5Flimit

는 SO 게시물에 관련된입니다 :

이 기능 할 수 SQLITE_ENABLE_UPDATE_DELETE_LIMIT라는 컴파일 플래그있어 관련 게시물에

How do you enable LIMIT for DELETE in SQLite?

, 당신은 어디 ID를 삭제할 수 있습니다 select 문에서 선택하여 시도하십시오.

How can I delete data with specific row number (sqlite)

관련 문제