CREATE TABLE test (
id INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
name VARCHAR(50)
);
必須聲明為 PRIMARY KEY,否則報錯
SQL Server
IDENTITY(種子,增量)
CREATE TABLE test (
id INT IDENTITY(100,10) PRIMARY KEY NOT NULL,
name VARCHAR(50)
);
可指定起始值 (100) 與增量 (10)
Oracle
SEQUENCE + .NEXTVAL
CREATE TABLE test (
id INT PRIMARY KEY NOT NULL,
name VARCHAR(50)
);
CREATE SEQUENCE test_id
INCREMENT BY 1 START WITH 1 MAXVALUE 9999;
-- 插入時引用
INSERT INTO test VALUES (test_id.NEXTVAL, 'www');
需單獨建立 Sequence,插入時調用 .NEXTVAL
核心差異總結
MySQL/ SQL Server:欄位屬性內建自增,語法簡潔。
Oracle:分離序列物件,靈活性高 (可跨表共用序列、自定義緩存、循環等),但寫入需額外調用。
移植時需注意語義對應:AUTO_INCREMENT ≈ IDENTITY(1,1) ≈ SEQUENCE INCREMENT BY 1。