MySQL基礎之 AUTO_INCREMENT

AUTO_INCREMENTmysql

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

語法(這裏是和聯合索引一塊兒舉例講解):
使用單個索引=
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)ide

總結:對於InnoDB表,自動增加列必須是索引,通常習慣上設置主鍵爲自動增加列。若是是組合索引,自動增加列必須是組合索引的第一列。索引

總結auto_increment的幾種注意事項:rem

(1)若是把一個NULL插入到一個AUTO_INCREMENT數據列裏去,MYSQL將自動生成下一個序列編號。編號從1開始,並1爲基數遞增。it

(2)把0插入AUTO_INCREMENT數據列的效果與插入NULL值同樣。但不建議這樣作,仍是以插入NULL值爲好。table

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

(4)當插入記錄時,若是爲AUTO_INCREMENT數據列明確指定了一個數值,則會出現兩種狀況,狀況一,若是插入的值與已有的編號重複,則會出現出錯信息,由於AUTO_INCREMENT數據列的值必須是惟一的;狀況二,若是插入的值大於已編號的值,則會把該插入到數據列中,並使在下一個編號將從這個新值開始遞增。也就是說,能夠跳過一些編號。擴展

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

相關文章
相關標籤/搜索