該場景涉及一個MySQL 表,其中id 列作為可視化的自增字段方便,而memberid 列充當實際的唯一鍵。但是,嘗試使用 PRIMARY KEY (memberid) 定義表會導致錯誤 (1075),指出只能有一個自動列且它必須是一個鍵。
為了解決這個問題,可以有一個不是主鍵的自動遞增列,只要有索引(key) 是在其上定義的。修改後的表定義如下:
<code class="sql">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) # or: UNIQUE KEY (id) ) ENGINE = MYISAM;</code>
透過在id列上新增KEY或UNIQUE KEY索引,在memberid列成為主鍵的同時保持自增功能,從而可以基於memberid 值。
最佳選擇取決於效能和磁碟空間的相對重要性。如果效能至關重要,則維護自動遞增 id 欄位並在 memberid 上使用索引可提供平衡:
但是,如果磁碟空間很大如果您擔心,請考慮完全刪除 id 列並依賴 memberid 列作為主鍵和自動遞增欄位。這種方法犧牲了一些性能來提高空間利用率。最終,性能和空間之間的選擇取決於應用的特定要求。
以上是MySQL中自增列可以不作為主鍵而存在嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!