MySQL 在嘗試定義自動增量列和非自動增量列的主鍵時遇到了挑戰自動增量列。預設情況下,MySQL規定只能有一個自增列,並且必須將其指定為主鍵。在嘗試優化表格效能和資料檢索效率時,這可能會導致混亂。
考慮以下範例:id 列標記為自動的成員表增量以便於可視化監控,而memberid列則作為查詢中成員標識的主鍵。目標是在建立 memberid 作為主鍵的同時保持自動增量功能。
嘗試使用PRIMARY KEY (memberid) 建立表格會導致錯誤:
1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
儘管有錯誤,但可以同時擁有自動增量列和不同的主鍵。這裡有兩種可行的方法:
1。為自增列建立索引
在id列上建立索引,以便根據id和memberid進行高效率擷取。修改後的表定義如下:
CREATE TABLE members ( `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, `memberid` VARCHAR( 30 ) NOT NULL , `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , `firstname` VARCHAR( 50 ) NULL , `lastname` VARCHAR( 50 ) NULL , PRIMARY KEY (`memberid`), KEY (`id`) ) ENGINE = MYISAM;
2.使自增列成為主鍵的一部分
重新定義表,將id 列包含在主鍵組合中,使id 和memberid 成為主鍵標識的定義因素。修改後的定義變為:
CREATE TABLE members ( `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, `memberid` VARCHAR( 30 ) NOT NULL , `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , `firstname` VARCHAR( 50 ) NULL , `lastname` VARCHAR( 50 ) NULL , PRIMARY KEY (`id`, `memberid`) ) ENGINE = MYISAM;
透過實作其中一種方法,您可以平衡自動增量列的需求(以方便視覺)和使用自訂鍵(memberid)以實現高效的成員識別查詢,而不影響表格效能。
以上是如何在 MySQL 中同時使用自動增量列和不同的主鍵?的詳細內容。更多資訊請關注PHP中文網其他相關文章!