MySql中重新設定AUTO_INCREMENT自增值方法

來源:互聯網
上載者:User


一般來說,自增值主要是資料表主鍵或者具有唯一性的欄位,在MySQL中可通過資料列的AUTO_INCREMENT屬性來自動產生。

可在建表時使用“AUTO_INCREMENT=n”來指定一個自增的初始值,比如:


CREATE TABLE test
(
id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(15) NOT NULL
)AUTO_INCREMENT = 100;

此例建立一個TEST表,主鍵ID設定為自增,初始值為 100。

當我們需要修改自增起始值時,可用 alter table table_name AUTO_INCREMENT=n 命令來重設。
比如表 test 的ID最大值為150,但是因為某種原因導致自增值已經到了250,所以需要重設為151以便於下次ID從151開始往上增,文法如下:

ALTER TABLE test AUTO_INCREMENT=151

說明:

(1)如果把一個NULL插入到一個AUTO_INCREMENT資料列裡去,MySQL將自動產生下一個序列編號。編號從1開始,並1為基數遞增。

(2)把0插入AUTO_INCREMENT資料列的效果與插入NULL值一樣。但不建議這樣做,還是以插入NULL值為好。

(3)當插入記錄時,沒有為AUTO_INCREMENT明確指定值,則等同插入NULL值。

(4)當插入記錄時,如果為AUTO_INCREMENT資料列明確指定了一個數值,則會出現兩種情況,情況一,如果插入的值與已有的編號重複,則會出現出錯資訊,因為AUTO_INCREMENT資料列的值必須是唯一的;情況二,如果插入的值大於已編號的值,則會把該值插入到資料列中,並使在下一個編號將從這個新值開始遞增。也就是說,可以跳過一些編號。

(5)如果用UPDATE命令更新自增列,如果列值與已有的值重複,則會出錯。如果大於已有值,則下一個編號從該值開始遞增。

如何修改Mysql的Auto_increment_increment全域變數,自增步長


先瞭解下查看全域變數的命令,以下命令都是登陸mysql後操作:

#查看auto_inc開頭的全域變數,也就是auto_increment_increment和auto_increment_offset這2個變數
mysql> SHOW VARIABLES LIKE 'auto_inc%'; 

設定全域變數
方法一:

#設定auto_increment_increment自增步長為n,也就是每插入一條資料,就加n,這個N必須是一個數字。預設是1
mysql> SET @@auto_increment_increment=n;

#設定auto_increment_offset自增開始數字為m,在建立表的自增熟悉時候,且表示空的。自增數字預設從m開始
mysql> SET @@auto_increment_offset=m;

如果以上方法還不生效,或者重啟mysql後,又變回來了。那肯定是在my.cnf裡面設定了全域變數。這個必須到設定檔裡面去修改了;這種修改永久有效。而且無法通過上面的操作再次被修改。

方法二:

用vi編輯器開啟設定檔,預設位置
#vi /etc/my.cnf

找到 auto_increment_increment 變數設定的地方;VI裡面可以用 "/auto_increment_increment" 找到。

找到後設定
auto_increment_increment=1;即可

其他全域變數也可在此設定檔裡面永久設定好。
設定檔修改好後,要重啟mysql服務才會生效。
#/etc/init.d/mysql restart

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.