在 DB2 中建立具備自動遞增主鍵的表格,需使用 GENERATED ALWAYS AS IDENTITY 子句。本文提供完整建表範例、參數說明與實測插入示範,助您快速掌握 Identity Column 設計要點。
CREATE TABLE test (
id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (
START WITH 1,
INCREMENT BY 1,
NO CACHE
),
name VARCHAR(20)
);
| 參數 | 說明 |
|---|---|
START WITH | 初始值(預設 1) |
INCREMENT BY | 遞增間距(預設 1,不可為 0) |
NO CACHE | 不快取序號,確保連續性(效能略低但無間隙) |
CACHE n | 預先配置 n 個序號(預設 20),提升效能但重啟可能造成間隙 |
MINVALUE / MAXVALUE | 序號下限/上限 |
CYCLE / NO CYCLE | 達上限後是否循環(預設 NO CYCLE) |
db2 => select * from test
ID NAME
----------- --------------------
0 條記錄已選擇。
db2 => insert into test(name) values('wjz')
DB20000I SQL命令成功完成。
db2 => select * from test
ID NAME
----------- --------------------
1 wjz
1 條記錄已選擇。
db2 => insert into test(name) values('xlp')
DB20000I SQL命令成功完成。
db2 => select * from test
ID NAME
----------- --------------------
1 wjz
2 xlp
2 條記錄已選擇。
可見 id 欄位自動產生 1、2 兩個連續值,無需手動指定。
CACHE 100 以上,降低鎖競爭。DB2 的 Identity Column 機制完整支援自增主鍵需求,語法彈性高、參數豐富。善用 NO CACHE 保證連續性,或 CACHE 提升吞吐,視業務特性調整即可。