作者 主題: AUTO_INCREMENT編號不連續的問題  (閱讀 5929 次)

0 會員 與 1 訪客 正在閱讀本文。

darren2000

  • 懷疑的國中生
  • **
  • 文章數: 82
    • 檢視個人資料
AUTO_INCREMENT編號不連續的問題
« 於: 2007-10-14 00:10 »
我將大量資料依序寫入mysql

primary key是用AUTO_INCREMENT讓他自動產生

但是發現一個問題,發現數字編號中間會不連續

理論上AUTO_INCREMENT應該會產生

1 2 3 4 5 6...10

但是,我跑出來的結果卻是

1 2 3 4 7 8 11

請問有人遇過這種問題嗎

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
AUTO_INCREMENT編號不連續的問題
« 回覆 #1 於: 2007-10-14 01:36 »
看一下 log 有沒有什麼訊息  :roll:

darren2000

  • 懷疑的國中生
  • **
  • 文章數: 82
    • 檢視個人資料
AUTO_INCREMENT編號不連續的問題
« 回覆 #2 於: 2007-10-14 13:27 »
我查到原因了

INSERT `ip_table` SET IP='192.168.27.116',src_count=1 ON DUPLICATE KEY UPDATE src_count=src_count+1

第一次,插入A時,key=1
第二次,插入A時,key=1,count++
第三次,插入B時,key=3

用AUTO_INCREMENT好像也不保證連續

hoyo

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 4030
  • 性別: 男
  • 有需要的時候,學習就不會分階段。
    • 檢視個人資料
    • 樂咖黑電腦學習網
AUTO_INCREMENT編號不連續的問題
« 回覆 #3 於: 2007-10-14 17:01 »
如果自己指定了大於目前的數字,就會跳號了
受人與魚,不如授人與漁
上海自來水來自海上;倫敦好奇人奇好敦倫

darren2000

  • 懷疑的國中生
  • **
  • 文章數: 82
    • 檢視個人資料
AUTO_INCREMENT編號不連續的問題
« 回覆 #4 於: 2007-10-14 17:58 »
引述: "hoyo"
如果自己指定了大於目前的數字,就會跳號了

哦~數字是讓他自己產生的

mysql實作出來的效果感覺像是對該table變更第幾次,自動產生的數字就是多少

而非實際上得列數往下遞增

qrtt1

  • 懷疑的國中生
  • **
  • 文章數: 73
    • 檢視個人資料
AUTO_INCREMENT編號不連續的問題
« 回覆 #5 於: 2007-11-07 23:36 »
引述: "darren2000"
我查到原因了

INSERT `ip_table` SET IP='192.168.27.116',src_count=1 ON DUPLICATE KEY UPDATE src_count=src_count+1

第一次,插入A時,key=1
第二次,插入A時,key=1,count++
第三次,插入B時,key=3

用AUTO_INCREMENT好像也不保證連續


不連續其實沒關係
用自動編號通常是做為一個 surrogate primary key
只要是 unique 就好

比起早期 er-model 流行的 natural primary key 比較不容易引發 duplicate key 的問題