使用
REINDEX。
(只REINDEX重建索引結構,它實際上並沒有改變任何率的值。)
使用中行的排序作爲隱式指數
而不是試圖改變一大堆行的索引值,爲什麼不執行排序順序的映射?
使用SELECT語句,如:
NSString* query = @"SELECT * FROM myTable ORDER BY id LIMIT 1 OFFSET %d";
query = [NSString stringWithFormat:query, indexPath.row + 1];
刪除行做這樣的事情:
NSString* query = @"DELETE FROM myTable WHERE ID = (SELECT ID FROM myTable ORDER BY ID LIMIT 1 OFFSET %d)";
query = [NSString stringWithFormat:query, indexPath.row + 1];
插入,定期進行插入像往常一樣。
這樣,當您刪除一行時,最終不需要編輯每一行的ID大於您要刪除的行。這會更快。
確保在數據庫發生更改時更新您的表視圖,以保持表視圖與數據庫一致。
這也有保持您的表視圖排序好的副作用。
定義一個觸發器,以改變受影響的索引
如果你真的想保持索引,使他們完美的系列(即:1,2,3,4,...)
您可以像這樣定義刪除觸發器:
CREATE TRIGGER reindex AFTER DELETE ON myTable FOR EACH ROW
BEGIN
UPDATE myTable SET ID = old.ID - 1 WHERE ID > old.ID;
END;
如果我理解正確,您希望在刪除後重新排序主鍵。 – 2009-11-24 17:59:43
是的,你說得對。 :)你知道有這種可能嗎? – user134282 2009-11-24 18:05:41