2011-10-23 11 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"部分を認識しないようです。削除するエントリを直接指定することなく、テーブル内の特定の行数を削除するにはどうすればよいですか?

+0

LIMIT start、range最初の30個を削除したい場合は、LIMIT 0,30を実行します。最初の30個を削除したい場合は、LIMIT 1,30 LIMIT 1,31 –

+0

は私のためには機能しません。 limit-partなしでは、someId = 123のすべてのエントリを削除します。それだけで何も削除しません。 – rindeastwood

+0

これで解決しましたか? – bryanmac

答えて

1

私はこれを試していませんが、関連している可能性があります。

機能することを可能SQLITE_ENABLE_UPDATE_DELETE_LIMITと呼ばれるコンパイルフラグがあります:

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

ここでは、関連のSOのポストです:関連記事に

How do you enable LIMIT for DELETE in SQLite?

、あなたはどこのid削除使用することができますが、 select文でselectを試してください:

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

関連する問題