AUTO_INCREMENT簡介
MySQL的AUTO_INCREMENT
屬性可以用於在插入新的記錄的時候,進行主鍵自增。
例如執行下面的SQL:
CREATE TABLE animals (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO animals (name) VALUES
('dog'),('cat'),('penguin'),
('lax'),('whale'),('ostrich');
SELECT * FROM animals;
複製程式碼
執行結果如下:
+----+---------+
| id | name |
+----+---------+
| 1 | dog |
| 2 | cat |
| 3 | penguin |
| 4 | lax |
| 5 | whale |
| 6 | ostrich |
+----+---------+
複製程式碼
AUTO_INCREMENT總結
-
id列設定為AUTO_INCREMENT以後,在inserte語句中, 如果id列為空, 或者id列值為0 (SQL Mode不是NO_AUTO_VALUE_ON_ZERO), 或者id列值NULL (id列為NOT NULL), 那麼id將自動增長。
-
通過insert語句在AUTO_INCREMENT列插入更大的值,則序列會被重置為最大值依次增加。
-
在使用MySQL時,若表中含自增欄位(auto_increment型別),則向表中insert一條記錄後,可以呼叫last_insert_id()來獲得最近insert的那行記錄的自增欄位值。
-
一道面試題
問:一張表,裡面有ID自增主鍵,當insert了17條記錄之後,刪除了第15,16,17條記錄,再把Mysql重啟,再insert一條記錄,這條記錄的ID是18還是15 ?
答:如果表的儲存引擎是MyISAM,id是18,因為MyISAM會將最大id記錄在檔案裡;如果表的儲存引擎是InnoDB,id是15,因為InnoDB會將最大id記錄在記憶體裡,重啟後會丟失。