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