MySQL如何自动生成唯一编号:主键自增与UUID的实战指南
在MySQL中,自动生成编号主要通过自增主键(AUTO_INCREMENT) 和UUID函数两种方式实现,前者适用于顺序数字ID,后者则生成全局唯一字符串标识。

自增主键(AUTO_INCREMENT)
这是最常用的自动编号方式,适用于需要连续、唯一数字标识的场景,创建表时,只需在整型主键字段后添加AUTO_INCREMENT属性:
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50)
);
插入数据时无需指定id值,MySQL会自动按顺序生成(如1,2,3...)。注意:自增值在表级别管理,分库分表时需避免重复,可通过设置auto_increment_offset调整起始值。
UUID自动生成
若需要分布式环境下的全局唯一编号,可使用UUID()函数生成36位字符串(如550e8400-e29b-41d4-a716-446655440000):
CREATE TABLE orders (
order_id CHAR(36) DEFAULT (UUID()),
product_name VARCHAR(100)
);
优势是跨服务器唯一,但存储空间较大且无序,可能影响索引性能,建议使用UUID_TO_BIN()优化存储,将UUID转为16字节二进制减少空间占用。
自定义编号规则
复杂业务场景(如按日期生成“ORD20240101001”格式编号)可通过触发器或程序逻辑实现,结合日期与自增序列:
CREATE TRIGGER generate_custom_id
BEFORE INSERT ON orders
FOR EACH ROW
SET NEW.order_code = CONCAT('ORD', DATE_FORMAT(NOW(), '%Y%m%d'), LPAD(NEW.id, 3, '0'));
- 自增主键简单高效,适合单库单表;
- UUID保障全局唯一性,适配分布式系统;
- 自定义规则需权衡复杂度与业务需求,根据实际场景选择方案,并注意索引优化与数据一致性。
未经允许不得转载! 作者:HTML前端知识网,转载或复制请以超链接形式并注明出处HTML前端知识网。
原文地址:https://www.html4.cn/16088.html发布于:2026-09-10





