mysql中自增auto_increment功能的相關設定及問題

來源:互聯網
上載者:User

mysql中的自增auto_increment功能相信每位phper都用過,也都知道如何設定欄位為自增欄位,但並不是所有phper都知道auto_increment的起始值和遞增量是如何設定的!本文就為大家分享一下mysql欄位自增功能的具體查看及設定方法。

涉及知識介紹
mysql伺服器維護著2種mysql的系統參數(系統變數):全域變數(global variables)和會話變數(session variables)。它們的含義與區別如其各占的名稱所示,session variables是在session層級的,對其的變更只會影響到本session;global variables是系統層級的,對其的變更會影響所有新session(變更時已經存在session不受影響)至下次mysql server重啟動。注意它的變更影響不能跨重啟,要想再mysql server重啟時也使用新的值,那麼就只有通過在命令列指定變數選項或者更改選項檔案來指定,而通過SET變更是達不到跨重啟的。
每一個系統變數都有一個預設值,這個預設值是在編譯mysql系統的時候確定的。對系統變數的指定,一般可以在server啟動的時候在命令列指定選項或者通過選項檔案來指定,當然,大部分的系統變數,可以在系統的運行時,通過set命令指定其值。

首先需要介紹一下查看mysql中全域變數的方法

複製代碼 代碼如下:show variables like '%xxx%'; <==> show session variables like '%xxx%'; //session會話變數
show global variables like '%xxx%'; //全域變數

例如查看與auto_increment相關的變數方法如下: 複製代碼 代碼如下:show variables like '%auto_increment%';

一般情況結果為

variables_name value
auto_increment_increment 1
auto_increment_offset 1

第一個變數名 auto_increment_increment 就是指 欄位一次遞增多少;
第二個變數名 auto_increment_offset 指 自增欄位的起始值。
比如,有個表test,欄位id為主鍵,自增;
如果auto_increment_offset=1 , 並且auto_increment_increment=1,那麼向表中插入第一條資料時,則該條資料的id=1,第二條id=2,第三條id=3以此類推……
如果auto_increment_offset=2 , 並且auto_increment_increment=10,那麼向表中插入第一條資料時,則該條資料的id=2,第二條id=12,第三條id=22以此類推……
注意:如果auto_increment_offset的值大於auto_increment_increment的值,則auto_increment_offset的值被忽略。

瞭解如何查看及其含義以後,剩下的就是如何修改這些變數的值了,修改也非常簡單,語句格式如下:
set auto_increment_increment=10
就這麼簡單就把變數auto_increment_increment的值設定成了10
—————————————————————————————————————
補充一個看似簡單但又不是很簡單的問題
問:如果有一張表,裡面有個欄位為id的自增主鍵,當已經向表裡面插入了10條資料之後,刪除了id為8,9,10的資料,再把mysql重啟,之後再插入一條資料,那麼這條資料的id值應該是多少,是8,還是11?
答:如果表的類型為MyISAM,那麼是11。如果表的類型為InnoDB,則id為8。
這是因為兩種類型的儲存引擎所儲存的最大ID記錄的方式不同,MyISAM表將最大的ID記錄到了資料檔案裡,重啟mysql自增主鍵的最大ID值也不會丟失;
而InnoDB則是把最大的ID值記錄到了記憶體中,所以重啟mysql或者對錶進行了OPTIMIZE操作後,最大ID值將會丟失。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.