MySQL AUTO_INCREMENT 及示例
讓我們瞭解 AUTO_INCREMENT 是如何工作的 -
AUTO_INCREMENT 屬性用於為新行生成唯一的標識。讓我們看看這個語句是如何工作的。在此之前,請考慮以下查詢 -
查詢
CREATE TABLE tableName (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO tableName (name) VALUES
(‘val1’),('val2'),('val3'),
('val4');
SELECT * FROM tableName;輸出
+----+---------+ | id | name | +----+---------+ | 1 | val1 | | 2 | val2 | | 3 | val3 | | 4 | val4 | +----+---------+
在上面的查詢中,沒有為“AUTO_INCREMENT”列指定值,因此 MySQL 自動為“id”列分配了一系列數字。也可以顯式分配值 0,以便數字序列從 0 開始。只有在未啟用“NO AUTO VALUE ON ZERO”SQL 模式時才能執行此操作。
如果某列被宣告為“NOT NULL”,則可以為該列分配 NULL 以生成一系列數字。
當任何值插入到 AUTO_INCREMENT 列中時,該列將設定為該值,並且序列也將重置,以便它從最大列值開始自動生成順序範圍內的值。
可以更新現有的“AUTO_INCREMENT”列,這也會重置“AUTO_INCREMENT”序列。
可以使用 SQL 中的“LAST_INSERT_ID()”函式或使用“mysql_insert_id()”(這是一個 C API 函式)檢索最近自動生成的“AUTO_INCREMENT”值。
這些函式是特定於連線的,這意味著它們的返回值不受執行插入操作的其他連線的影響。
可以使用“AUTO_INCREMENT”列的最小整數資料型別,該型別足夠大以容納使用者所需的最大序列值。
當列達到資料型別的上限範圍時,會嘗試再次生成一系列數字。但這會失敗。
因此,如果可能,請使用 UNSIGNED 屬性,以便在列 AUTO_INCREMENT 值中允許更大的值範圍。
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP