MySQL中auto_increment的基本特性

來源:互聯網
上載者:User

標籤:gre   資料庫應用   應用   tle   sign   建表   失效   tiny   table   

建立資料表時,經常會出現auto_increment這個詞,下面就來瞭解一下它吧。

MySQL的中AUTO_INCREMENT類型的屬性用於為一個表中記錄自動產生ID功能,可在一定程度上代替Oracle,PostgreSQL等資料庫中的sequence。

在資料庫應用,我們經常要用到唯一編號,以標識記錄。在MySQL中可通過資料列的AUTO_INCREMENT屬性來自動產生。

可在建表時可用“AUTO_INCREMENT=n”選項來指定一個自增的初始值。
可用alter table table_name AUTO_INCREMENT=n命令來重設自增的起始值。

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

在使用AUTO_INCREMENT時,應注意以下幾點:
AUTO_INCREMENT是資料列的一種屬性,只適用於整數類型資料列。
設定AUTO_INCREMENT屬性的資料列應該是一個正數序列,所以應該把該資料列聲明為UNSIGNED,這樣序列的編號個可增加一倍。
AUTO_INCREMENT資料列必須有唯一索引,以避免序號重複(即是主鍵或者主鍵的一部分)。
AUTO_INCREMENT資料列必須具備NOT NULL屬性。
AUTO_INCREMENT資料列序號的最大值受該列的資料類型約束,如TINYINT資料列的最大編號是127,如加上UNSIGNED,則最大為255。一旦達到上限,AUTO_INCREMENT就會失效。

當進行全表刪除時,MySQL AUTO_INCREMENT會從1重新開始編號。

這是因為進行全表操作時,MySQL(和PHP搭配之最佳組合)實際是做了這樣的最佳化操作:先把資料表裡的所有資料和索引刪除,然後重建資料表。

如果想刪除所有的資料行又想保留序列編號資訊,可這樣用一個帶where的delete命令以抑制MySQL(和PHP搭配之最佳組合)的最佳化:delete from table_name where 1;

可用last_insert_id()擷取剛剛自增過的值。

MySQL中auto_increment的基本特性

聯繫我們

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