sql刪除一條記錄後其他記錄的id自動遷移,使id連續
在寫一個應用時,有這麼一個操作:客戶端傳過來點選的位置,進行運算後得到相應資料在資料庫裡的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);
很多網友都說這樣會影響效能,應該用觸發器進行操作。因為偶資料庫基礎比較渣,最近又忙著先實現功能,只好先這樣,日後有能力、有時間再優化吧
相關文章
- mysql刪除一條記錄MySql
- sql刪除重複記錄只保留一條SQL
- mysql刪除重複記錄,儲存Id最小的一條MySql
- SQL 獲取插入後的最新一條記錄ID號SQL
- sql server 中刪除內容重複的某條記錄SQLServer
- MySQL刪除重複記錄並保留第一條MySql
- oracle單條sql與plsql rowid插入記錄小記OracleSQL
- 挺有意思:PHP 將N秒內連續的記錄視為一條記錄PHP
- 用SQL語言刪除表中的記錄SQL
- Oracle如何刪除表中重複記錄保留第一條Oracle
- 用“稽核物件”功能記錄檔案刪除記錄物件
- 刪除Chrome位址列記錄中自動補全的網址Chrome
- Oracle 刪除表中重複記錄的DELETE SQLOracledeleteSQL
- 刪除不掉的資料記錄
- oracle實驗記錄 (ROW 壓縮,遷移,連結)Oracle
- 刪除Oracle重複記錄Oracle
- oracle刪除重複記錄Oracle
- SQL 如何查詢連續上漲 N 次的記錄SQL
- 如何刪除遠端桌面歷史連線記錄
- sql取前幾條記錄SQL
- SEAndroid 記錄Android
- SQL Server 批量刪除重複記錄(批量、快速、安全)SQLServer
- 在SQL Server中快速刪除重複記錄(轉)SQLServer
- 記錄一次XTTS遷移碰到的問題TTS
- 最近的一次ASM diskgroup線上遷移記錄ASM
- 反連線,最快返回第一條記錄
- 找回Oracle中Delete刪除的記錄Oracledelete
- Mysql語句查詢指定重複記錄和刪除重複記錄僅保留一條【親測可以】MySql
- windows10更新記錄刪除_怎樣刪除win10更新歷史記錄WindowsWin10
- SQL 分組排序取最新一條記錄SQL排序
- Mongodb原始碼分析--刪除記錄MongoDB原始碼
- oracle 快速刪除大批量資料方法(全部刪除,條件刪除,刪除大量重複記錄)Oracle
- 用SQL語句刪除重複記錄的四種方法SQL
- Oracle 查詢並刪除重複記錄的SQL語句OracleSQL
- 完全刪除遠端桌面連線(mstsc)歷史記錄
- 記錄一個sqlSQL
- oracle 快速刪除大批量資料方法(全部刪除,條件刪除,刪除大量重複記錄) 轉Oracle
- 【轉】oracle 快速刪除大批量資料方法(全部刪除,條件刪除,刪除大量重複記錄)Oracle