You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何无需使用复合主键,创建含静态前缀与自增元素的主键

适配小规模数据库的落地方案

优先推荐:持久化计算列方案(完全无需复合主键)

  • 表2依然保留IDENTITY (1,1)的纯数字自增列作为唯一主键,不改动原有的自增逻辑
  • 额外新增一个持久化计算列作为带前缀的业务ID字段,由数据库自动生成无需手动维护,示例代码(SQL Server环境):
ALTER TABLE 表2 
ADD 业务ID AS 'M' + RIGHT('00000' + CAST(ID AS VARCHAR(5)), 5) PERSISTED;
  • 上述代码生成的业务ID格式为M00001、M00002,如果不需要补零只需要M1、M2格式,调整计算逻辑即可:
ALTER TABLE 表2 
ADD 业务ID AS 'M' + CAST(ID AS VARCHAR(10)) PERSISTED;
  • 优势:主键仍为高性能的纯数字自增ID,查询、索引效率无损耗,带前缀字段完全自动生成,后期调整格式也无需改动业务代码,实现成本极低。

备选方案:触发器实现带前缀ID直接作为主键

如果需要把带前缀的字符串直接作为主键列,可通过插入触发器自动生成ID,无需业务代码介入:

  • 表2主键设为VARCHAR类型,插入前触发器自动获取当前表最大ID的数值部分,加1后拼接前缀写入主键列
  • 优势:主键直接符合你需要的格式,无需额外字段,小规模低并发场景下无稳定性问题。

其他调研方案适配性说明

  • 复合主键:完全不需要使用,上述两个方案均为单主键实现
  • UUID:不推荐,无序UUID会增加索引维护开销,可读性也远低于带前缀的规则ID,不符合你的需求
  • Hi/Lo算法、分布式ID生成方案:仅适合多节点、分布式数据库场景,你的小规模业务使用会额外增加维护成本,没有必要。

内容的提问来源于stack exchange,提问作者A. Mahar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 10:42:03