温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Auto Increment与Identity有什么区别

发布时间:2026-07-02 04:27:25 来源:亿速云 阅读:84 作者:小樊 栏目:数据库

在数据库中,AUTO INCREMENTIDENTITY 都用于自动生成数值型主键或唯一值,但它们并不是完全相同的概念,不同数据库中的实现也不一样。下面用通俗方式+对比说明。


一句话总结

IDENTITY 是一种 SQL 标准定义的自增机制,而 AUTO_INCREMENTMySQL 特有的实现方式
两者目的相同,但语法、能力和数据库支持不同。


一、AUTO_INCREMENT(主要是 MySQL)

特点

  • MySQL 特有
  • 只能用于 整数类型的列
  • 通常与 PRIMARY KEY 搭配使用
  • 默认从 1 开始,每次 +1

示例(MySQL)

CREATE TABLE user (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50)
);

插入数据

INSERT INTO user (name) VALUES ('Tom');
-- id 自动生成:1

注意事项

  • 一个表 只能有一个 AUTO_INCREMENT 列
  • 必须是 索引列(一般是主键)
  • 不能回滚(事务回滚后,自增值不会恢复)
  • 不支持自定义“起始值 + 步长”以外的复杂行为

二、IDENTITY(SQL 标准,SQL Server / DB2 / PostgreSQL 等)

特点

  • 属于 SQL 标准(ANSI SQL)
  • 实现更规范
  • 支持:
    • 起始值(START WITH)
    • 步长(INCREMENT BY)
    • 可控制是否可手动插入

示例(SQL Server)

CREATE TABLE user (
    id INT IDENTITY(1,1) PRIMARY KEY,
    name VARCHAR(50)
);

含义:

IDENTITY(起始值, 步长)

PostgreSQL(较新版本)

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 等)
语法标准
是否可设置步长 全局参数 ✅(列级)
是否可设置起始值 有限
是否可插入指定值 需关闭设置
一个表多个自增列 ✅(某些数据库)
灵活性 较低 较高

四、常见误区

❌ 误区 1:AUTO_INCREMENT 就是 IDENTITY

✅ 两者只是“功能类似”,不是同一种东西

❌ 误区 2:所有数据库都支持 AUTO_INCREMENT

只有 MySQL / MariaDB 系列支持

❌ 误区 3:IDENTITY 一定效率更高

✅ 性能差异微乎其微,更多是 标准和可移植性 的区别


五、什么时候选哪个?

  • MySQL → AUTO_INCREMENT
  • SQL Server / PostgreSQL → IDENTITY
  • 追求数据库标准、可移植性 → 倾向 IDENTITY
  • 简单自增主键 → 两者都够用

如果你愿意,可以告诉我:

  • 使用哪种数据库(MySQL / SQL Server / Oracle / PostgreSQL)
  • 是否需要分布式、高并发、分库分表场景

我可以帮你进一步选型或对比 Sequence / Snowflake / UUID 的方案。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI