[請益] 資料庫裡被刪除的資料?

作者: tingmeow (雪爐喵)   2017-03-02 21:56:57
id name relationship
1 阿貓 小王
2 阿狗 小三
3 阿摸 砲友
4 咩咩 姊姊
5 汪汪 哥哥
------------------
想請教一下,假如我刪除了中間的第2-4個,
id是auto increment,那資料在插入的時候還是往後加 變成789...
這樣會不會造成什麼問題呢?例如說讀頁碼的時候..
遇到這類情況大家會怎麼做呢?
有辦法讓它自動補進之前被刪的id嗎?
新手上路 請多指點 感激感激 ~~
作者: LPH66 (-6.2598534e+18f)   2017-03-02 22:44:00
除非真的有很必須的連號要求, 不然刪除的缺號就給他缺很多時候這個 id 並不具有數值意義而只是一個唯一代號而已反正資料庫在存資料時不是根據你的 id 決定怎麼存的缺號基本上無關緊要
作者: Phedra (Phedra)   2017-03-03 02:48:00
ID 缺號不影響頁碼,根據頁碼讀取資料是看實作方式。通常是根據頁碼換算出 Offset 去取資料例如每頁顯示 20 筆資料,要讀取第 3 頁的資料,就會是offset = 20 * (3 - 1) = 40,從第40筆資料之後取得20筆SELECT * FROM user LIMIT 20 OFFSET 40等同 SELECT * FROM user LIMIT 40, 20
作者: MOONRAKER (㊣牛鶴鰻毛人)   2017-03-03 11:27:00
不會有什麼問題,也不建議你補。當然你可以用另外一個表,刪除時把空號加進去,新增時讀出一個空號用掉,同時刪掉,看你想不想做。如前面所述,有db幫忙,重新編號或頁數是最簡單的事情
作者: LPH66 (-6.2598534e+18f)   2017-03-03 21:40:00
啊, 看到推文回答大概猜到你的盲點在哪了基本上還是那個「id 不具有數值意義, 僅是唯一代號」的概念不過我少講了一個性質, 這個 id 是「有序的唯一代號」列出資訊編頁時並不是照數值去切頁, 而是照順序去切頁所依據的就是這個「有序的唯一代號」的順序反應在 SQL 指令上就是上面推文提的 limit / offset依照某順序排好 (order by) 之後列出第幾名 (limit/offset)因為 id 值跟實際存放位置沒有關連, 不連號不影響這些操作你可以思考一下: 當進行有條件的查詢時, id 值就不可能當做列表編頁的依據了, 能依據的只有列表的第 N 名這個「第 N 名」概念正是 limit / offset 所代表的
作者: threeus (侍衛)   2017-03-05 12:14:00
結果問的人不見了
作者: latte0205 (冰咖啡)   2017-03-08 15:35:00
通常都是會跟其他表做關聯性的資料表, 雖然只是ID,建議還是用假性刪除會比較好, 多年開發的經驗
作者: tingmeow (雪爐喵)   2017-03-10 01:34:00
有我已經參考好上面的回答把分頁寫好了!!大感激QQ雖然是去查詢一些網站類似的script來寫的發現有的書把分頁寫得又臭又長 *-* 這個方法簡單多了謝謝大家m(__ __)m 我想先直接無視id了

Links booklink

Contact Us: admin [ a t ] ucptt.com