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

PostgreSQL中如何不指定列名且跳过IDENTITY列执行插入?

解决PostgreSQL中不指定列名插入自增表的问题

你的问题核心是PostgreSQL要求VALUES子句的元素数量必须和目标表的列数完全匹配,而SQL Server会自动忽略IDENTITY列的位置,直接匹配后续列。在PostgreSQL里可以通过以下方式实现需求:

方法:用DEFAULT占位自增列位置

在VALUES列表中给自增列(Id)的位置传入DEFAULT关键字,让PostgreSQL自动生成该列的自增值,后续元素按列定义顺序对应其他列:

INSERT INTO public.test VALUES (DEFAULT, 'testData');

原理说明

  • PostgreSQL的GENERATED ALWAYS AS IDENTITY列允许接受DEFAULT值,此时数据库会自动触发自增逻辑生成ID。
  • 这种写法既不需要指定列名,又严格遵循了表的列定义顺序,完全符合你的需求。

如果后续修改表的列定义(比如新增列),只要保持VALUES列表的元素顺序和列顺序一致,并对新增的有默认值的列用DEFAULT占位,就能继续用这种方式插入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 07:05:42