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

如何在PostgreSQL中实现SQL Server自定义code计算列的等效功能?

在PostgreSQL中实现SQL Server自增计算列的等效功能

你要实现的是和SQL Server示例中完全一致的效果:一个自增的id列,加上自动生成格式为P+4位补零id的code计算列。以下是对应的PostgreSQL建表语句:

CREATE TABLE test(
    id INT GENERATED ALWAYS AS IDENTITY NOT NULL,
    code TEXT GENERATED ALWAYS AS ('P' || LPAD(id::TEXT, 4, '0')) STORED
);

关键部分说明:

  • GENERATED ALWAYS AS IDENTITY:对应SQL Server的IDENTITY(1,1),自动生成从1起始、步长为1的自增主键值,是PostgreSQL符合SQL标准的自增列实现。
  • LPAD(id::TEXT, 4, '0'):替代SQL Server的RIGHT('0000' + CONVERT(VARCHAR, id), 4),将id转为文本后,在左侧补零至4位长度,确保输出固定4位格式。
  • ||:PostgreSQL的字符串连接运算符,作用等同于SQL Server中的+。
  • GENERATED ALWAYS AS (...) STORED:定义计算列,STORED表示计算值会被持久化存储在表中(和SQL Server的PERSISTED计算列一致);如果不需要存储,仅在查询时计算,可替换为VIRTUAL(对应SQL Server默认的非持久化计算列)。

测试验证

插入两条测试数据:

INSERT INTO test DEFAULT VALUES;
INSERT INTO test DEFAULT VALUES;

查询结果:

id | code
----+-------
  1 | P0001
  2 | P0002

内容的提问来源于stack exchange,提问作者Felipe Renovato

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 09:50:28