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

如何将SQLite自增整数主键格式化为C1、C2这类带字符前缀的形式?

实现方案

方案1:保留原有整数自增主键,查询时动态拼接(最推荐)

原有自增整数主键的存储效率、查询性能、外键关联成本都是最优的,不需要改动现有表结构,只需要在展示时拼接前缀即可:

-- 查询时直接拼接得到C前缀的格式化id
SELECT 'C' || id AS formatted_id, name, phone FROM societe;

也可以在业务代码层处理,查询出整数id后直接拼接C前缀再返回给展示层,灵活性更高。

方案2:新增字段持久化存储格式化id,触发器自动生成

如果业务要求必须把带前缀的id直接存储在数据库中,可以新增专用存储字段,配合SQLite触发器在插入数据时自动生成值:

步骤1:修改表结构新增格式化id字段

ALTER TABLE societe ADD COLUMN formatted_id TEXT UNIQUE;

步骤2:创建插入触发器自动赋值

CREATE TRIGGER insert_societe_formatted_id
AFTER INSERT ON societe
FOR EACH ROW
BEGIN
    UPDATE societe 
    SET formatted_id = 'C' || NEW.id 
    WHERE id = NEW.id;
END;

后续插入数据时不需要手动给id和formatted_id传值,触发器会自动根据自增生成的整数id拼接出C1、C2格式的值:

-- 插入示例
INSERT INTO societe (name, phone) VALUES ('某科技公司', 13800138000);
-- 验证插入结果
SELECT formatted_id, name, phone FROM societe;

注意事项

不建议直接把原主键id字段改成TEXT类型来存储带前缀的值,SQLite原生不支持TEXT类型的自增主键,改了之后需要自己手动计算下一个id的值,不仅性能差,高并发插入时还很容易出现id冲突问题。

内容的提问来源于stack exchange,提问作者Taher Zribi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 22:54:09