mysql自增長AUTO_INCREMENT實例用法

巴扎黑
發布: 2017-05-15 15:15:04
原創
2362 人瀏覽過

為什麼要使用自增長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語句。

【相關推薦】

  1. php中文網特別推薦:php程式設計師工具箱下載(一鍵搭建php環境)

  2. #詳解mysql資料庫中的主鍵

#

以上是mysql自增長AUTO_INCREMENT實例用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!