MySQL基礎之 AUTO_INCREMENT


AUTO_INCREMENT

AUTO_INCREMENT是mysql唯一擴展的完整性約束,當為數據庫表中插入新紀錄時,字段上的值會自動生成唯一的ID,再具體設置AUTO_INCREMENT約束時,一個表中只能有一個字段使用該約束,並且該字段的數據類型必須為整數類型。還有,我們習慣上將表中的一個列同時設置為AUTO_INCREMENT和主鍵。

 

語法(這里是和聯合索引一起舉例講解):

使用單個索引

mysql> create table auto(
    -> id smallint not null auto_increment,
    -> name char(15),
    -> primary key(id)
    -> );
Query OK, 0 rows affected (0.04 sec)

使用組合索引

mysql> create table autoincre_demo(
    -> d1 smallint not null auto_increment,
    -> d2 smallint not null,
    -> name varchar(10),
    -> index(d1,d2)
    -> );
Query OK, 0 rows affected (0.06 sec)

總結:對於InnoDB表,自動增長列必須是索引,一般習慣上設置主鍵為自動增長列。如果是組合索引,自動增長列必須是組合索引的第一列。

 

總結auto_increment的幾種注意事項:

(1)如果把一個NULL插入到一個AUTO_INCREMENT數據列里去,MYSQL將自動生成下一個序列編號。編號從1開始,並1為基數遞增。

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

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

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

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM