Magento 2 的订单号不是简单地把 sales_order.entity_id 显示出来。订单、发票、发货和退款单分别使用销售序列生成编号,因此修改订单号前缀之前,要先确认目标 Store 和实体类型。
订单号是怎样生成的
sales_sequence_meta 记录实体类型、Store ID 与具体序列表的关系;sales_sequence_profile 保存前缀、后缀、起始值和步长。真正递增的数字位于对应的 sequence_order_* 表。
SELECT meta.meta_id, meta.entity_type, meta.store_id, meta.sequence_table,
profile.prefix, profile.suffix, profile.start_value, profile.step
FROM sales_sequence_meta AS meta
JOIN sales_sequence_profile AS profile ON profile.meta_id = meta.meta_id
WHERE meta.entity_type = 'order'
ORDER BY meta.store_id;
先执行查询,确认目标 Store ID。多商店项目最常见的错误,是修改了默认商店的 profile,却在另一个 Store 下测试。
修改前缀
假设已确认目标 profile ID,可以在维护窗口内更新前缀:
UPDATE sales_sequence_profile
SET prefix = 'CN-'
WHERE profile_id = 3;
示例中的 ID 只是说明,不能直接复制到生产库。操作前应备份数据库,并保留原值。前缀长度还要符合数据库字段和外部 ERP、支付、物流系统的订单号格式限制。
不要用这种方式重置历史订单
Sequence 只负责生成新编号。修改 profile 不会重写已有订单,也不应该批量修改 increment_id。订单号可能被支付记录、发票、邮件和外部系统引用,重写历史数据会破坏关联。
关于起始数字
若业务要求从新的数字区间开始,应先理解对应序列表和 start_value 的计算方式,并在没有下单并发的维护窗口实施。直接修改 AUTO_INCREMENT 可能与已有编号冲突。
完成后创建一笔测试订单,并同时检查订单、发票和发货编号。通常只需要改变订单前缀时,不要顺手修改其他实体的序列。把本次 Store ID、profile ID、修改前后值记录到发布单中,后续排查会容易很多。

