mysql自增長AUTO_INCREMENT案例用法
發表時間:2023-09-07 來源:明輝站整理相關軟件相關文章人氣:
[摘要]為什么使用自增長AUTO_INCREMENT?讓我們再次考察 customers 和 orders 表。 customers 表中的顧客由列cust_id 唯一標識,每個顧客有一個唯一編號。類似, orders 表中的每個訂單有一個唯一的訂單號,這個訂單號存儲在列 order_num 中。這些編號...
為什么使用自增長AUTO_INCREMENT?讓我們再次考察 customers 和 orders 表。 customers 表中的顧客由列cust_id 唯一標識,每個顧客有一個唯一編號。類似, orders 表中的每個訂單有一個唯一的訂單號,這個訂單號存儲在列 order_num 中。這些編號除它們是唯一的以外沒有別的特殊意義。在增加一個新顧客或新訂單時,需要一個新的顧客ID或訂單號。這些編號可以任意,只要它們是唯一的即可。
顯然,使用的最簡單的編號是下一個編號,所謂下一個編號是大于當前最大編號的編號。例如,如果 cust_id 的最大編號為 10005 ,則插入表中的下一個顧客可以具有等于 10006 的 cust_id 。
簡單嗎?不見得。你怎樣確定下一個要使用的值?當然,你可以使用 SELECT 語句得出最大的數(使用Max() 函數),然后對它加1。但這樣做并不可靠(你需要找出一種辦法來保證,在你執行 SELECT和 INSERT 兩條語句之間沒有其他人插入行,對于多用戶應用,這種情況是很有可能出現的),而且效率也不高(執行額外的MySQL操作肯定不是理想的辦法)。
這就是 AUTO_INCREMENT 發揮作用的時候了。請看以下代碼行(用來創建 customers 表的 CREATE TABLE 語句的組成部分):
cust_id int NOT NULL AUTO_INCREMENT,
AUTO_INCREMENT使用方法
AUTO_INCREMENT 告訴MySQL,本列每當增加一行時自動增量。每次執行一個 INSERT 操作時,MySQL自動對該列增量(從而才有這個關鍵字AUTO_INCREMENT ),給該列賦予下一個可用的值。這樣給每個行分配一個唯一的 cust_id ,從而可以用作主鍵值。
注意:
每個表只允許一個 AUTO_INCREMENT 列,而且它必須被索引(如,通過使它成為主鍵)。覆蓋 AUTO_INCREMENT 如果一個列被指定為 AUTO_INCRE-MENT ,則它需要使用特殊的值嗎?你可以簡單地在 INSERT 語句中指定一個值,只要它是唯一的(至今尚未使用過)即可,該值將被用來替代自動生成的值。后續的增量將開始使用該手工插入的值。
缺點:
確定 AUTO_INCREMENT 值 讓MySQL生成(通過自動增量)主鍵的一個缺點是你不知道這些值都是誰。
select last_insert_id()函數
考慮這個場景:你正在增加一個新訂單。這要求在 orders 表中創建一行,然后在 orderitms 表中對訂購的每項物品創建一行。 order_num 在 orderitems 表中與訂單細節一起存儲。這就是為什么 orders 表和 orderitems 表為相互關聯的表的原因。這顯然要求你在插入 orders 行之后,插入 orderitems 行之前知道生成的 order_num 。
那么,如何在使用 AUTO_INCREMENT 列時獲得這個值呢?可使用 last_insert_id() 函數獲得這個值,如下所示:
select last_insert_id()
此語句返回最后一個 AUTO_INCREMENT 值,然后可以將它用于后續的MySQL語句。
【相關推薦】
php中文網特別推薦:php程序員工具箱下載(一鍵搭建php環境)
詳解mysql數據庫中的主鍵
以上就是mysql自增長AUTO_INCREMENT實例用法的詳細內容,更多請關注php中文網其它相關文章!
學習教程快速掌握從入門到精通的SQL知識。