許多開發者誤以為 AUTO_INCREMENT 欄位的自增 ID 無法修改,實際上 MySQL 提供了多種靈活的設定方式。本文將系統介紹如何在建表、修改表結構、以及 Rails Migration 中調整自增起始值。
-- 建表時指定自增主鍵
CREATE TABLE table1 (
id INT AUTO_INCREMENT PRIMARY KEY,
...
);
-- 事後為現有表新增自增主鍵
ALTER TABLE table1 ADD id INT AUTO_INCREMENT PRIMARY KEY;
注意:自增欄位必須設為 PRIMARY KEY。
若希望 ID 從特定數值開始(如 QQ 號從 10000 起),或大量刪除資料後重置起始值:
-- 設定下一個自增值為 10000
ALTER TABLE users AUTO_INCREMENT = 10000;
-- 批量刪除後,將起始值退回至 123456
ALTER TABLE users AUTO_INCREMENT = 123456;
實測提醒:單機 MySQL 無問題,但在 MySQL Cluster 環境下可能失效,疑與主鍵機制差異有關,需進一步研究。
create_table :articles, options: 'AUTO_INCREMENT = 1001' do |t|
# 欄位定義
end
CREATE TABLE table_1 (
id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(5) NOT NULL
) AUTO_INCREMENT = 100; -- ID 從 100 開始
若需讓自增 ID 回歸預設值(從 1 開始),最簡單的方式是截斷資料表:
TRUNCATE TABLE table1;
此操作會清空所有資料並重置自增計數器。