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 值中允許更大的值範圍。

更新於: 2021年3月9日

403 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.