不同資料庫實現自增主鍵的語法差異極大。本文整理 DB2、Oracle、MySQL、PostgreSQL、SQL Server、Sybase 六大主流資料庫的標準建表語法,可直接複製套用。
| 資料庫 | 建表語法 | 備註 |
|---|---|---|
| DB2 |
|
Identity 列屬性豐富,支援 CYCLE、CACHE、ORDER |
| Oracle (12c 前) |
|
需 Sequence + Trigger 兩物件;12c+ 可用 GENERATED AS IDENTITY |
| Oracle 12c+ |
|
原生 Identity,語法簡潔 |
| MySQL / MariaDB |
|
AUTO_INCREMENT 僅限單欄、通常搭配 PK |
| PostgreSQL |
|
SERIAL 內建 Sequence;10+ 支援標準 IDENTITY |
| SQL Server |
| IDENTITY(seed, increment) |
| Sybase ASE / SQL Anywhere |
| 語法同 SQL Server |
SEQ.NEXTVAL,SQL Server/PostgreSQL/MySQL 隱性取值。RETURNING id INTO :v,SQL Server SCOPE_IDENTITY(),MySQL LAST_INSERT_ID(),PostgreSQL RETURNING id。CACHE 減少鎖競爭;Identity 通常內建快取。OVERRIDING SYSTEM VALUE,SQL Server SET IDENTITY_INSERT ON,MySQL 直接 INSERT 指定值。