在数据库中,AUTO INCREMENT 和 IDENTITY 都用于自动生成数值型主键或唯一值,但它们并不是完全相同的概念,不同数据库中的实现也不一样。下面用通俗方式+对比说明。
IDENTITY 是一种 SQL 标准定义的自增机制,而 AUTO_INCREMENT 是 MySQL 特有的实现方式。
两者目的相同,但语法、能力和数据库支持不同。
PRIMARY KEY 搭配使用CREATE TABLE user (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50)
);
INSERT INTO user (name) VALUES ('Tom');
-- id 自动生成:1
CREATE TABLE user (
id INT IDENTITY(1,1) PRIMARY KEY,
name VARCHAR(50)
);
含义:
IDENTITY(起始值, 步长)
CREATE TABLE user (
id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY
);
或允许手动插入:
id INT GENERATED BY DEFAULT AS IDENTITY
| 对比项 | AUTO_INCREMENT | IDENTITY |
|---|---|---|
| 数据库 | MySQL 特有 | SQL 标准(SQL Server / PostgreSQL 等) |
| 语法标准 | 否 | ✅ |
| 是否可设置步长 | 全局参数 | ✅(列级) |
| 是否可设置起始值 | 有限 | ✅ |
| 是否可插入指定值 | 需关闭设置 | ✅ |
| 一个表多个自增列 | ❌ | ✅(某些数据库) |
| 灵活性 | 较低 | 较高 |
✅ 两者只是“功能类似”,不是同一种东西
✅ 只有 MySQL / MariaDB 系列支持
✅ 性能差异微乎其微,更多是 标准和可移植性 的区别
如果你愿意,可以告诉我:
我可以帮你进一步选型或对比 Sequence / Snowflake / UUID 的方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。