auto_increment(mysql)或类似机制(如postgresql的serial、sql server的identity)用于主键自动递增生成唯一整数;创建表时需定义为int类型并配合primary key或unique约束;插入时可省略id列或设为null/default;可通过last_insert_id()或show create table查看,alter table可重置起始值;注意id不重复、不回收、显式插入大值会影响后续自增。

SQL 中的 AUTO_INCREMENT(MySQL)或类似机制(如 PostgreSQL 的 SERIAL、SQL Server 的 IDENTITY)用于让主键字段在每次插入新记录时自动产生唯一、递增的整数值,无需手动指定 ID。
创建表时启用 AUTO_INCREMENT
在定义主键列时,加上 AUTO_INCREMENT 并确保该列为 INT 类型且设为 PRIMARY KEY 或至少有 UNIQUE 约束:
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), email VARCHAR(100) );
注意:AUTO_INCREMENT 必须配合索引使用(通常是主键或唯一键),否则会报错。
插入数据时不指定 ID 字段
插入新行时,跳过 id 列,数据库会自动分配下一个可用值:
INSERT INTO users (name, email) VALUES ('张三', 'zhangsan@example.com');
也可以显式写 NULL 或 DEFAULT(效果相同):
INSERT INTO users (id, name, email) VALUES (NULL, '李四', 'lisi@example.com');
查看和调整当前自增起点
插入后可通过以下方式确认当前最大 ID:
-
查最后插入的 ID:用
SELECT LAST_INSERT_ID(); -
查表当前自增值:执行
SHOW CREATE TABLE users;,结果中会显示AUTO_INCREMENT=xxx -
重置起始值(谨慎操作):
ALTER TABLE users AUTO_INCREMENT = 100;—— 下一次插入将从 100 开始(需大于当前最大 ID)
注意事项与常见问题
- 同一张表只能有一个 AUTO_INCREMENT 列
- 删除记录不会回收已用 ID,自增序列只增不减
- 若插入时显式指定一个已存在的 ID,会报错(违反主键唯一性);若指定一个比当前最大值还大的 ID,则后续自增将从此值 +1 开始
- 批量插入多行时,ID 仍按顺序连续分配(除非中间有显式指定)










