sql刪除一條記錄後其他記錄的id自動遷移,使id連續

拭心發表於2015-06-06

在寫一個應用時,有這麼一個操作:客戶端傳過來點選的位置,進行運算後得到相應資料在資料庫裡的id,然後顯示對應的資訊。

但是在進行delete後資料顯示就混亂了,發現根本原因是原本連續的資料id(例如:1、2、3、4),在sqlite的delete語句執行完後(比如說刪除id為2的資料),變得不連續(1、3、4)。

刪除後點選第三個資料,結果他顯示成第二個,而第二個早就刪除了,因此顯示的資訊完全混亂。

解決程式碼如下:

在執行刪除時更新表,把刪除位置後面的都往前移動一位

db.execSQL("delete from tb_diary2 where _id in ("+ sb + ")",
                    (Object[]) ids);
            //更新id,使id大於要刪除的id的往前移動一位。
            db.execSQL("update tb_diary2 set _id=_id-1 where _id > ?",(Object[] )ids);

很多網友都說這樣會影響效能,應該用觸發器進行操作。因為偶資料庫基礎比較渣,最近又忙著先實現功能,只好先這樣,日後有能力、有時間再優化吧

相關文章