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

PostgreSQL/pgAdmin4中Identity与Generated的区别是什么?

PostgreSQL pgAdmin4中Identity与Generated选项的区别

作为有SQL Server背景的用户,直接给你掰扯清楚这俩的核心差异,别搞混:

1. 核心用途完全不是一回事

  • Identity列:就是对标你熟悉的SQL Server IDENTITY,专门用来实现整数列的自增逻辑,是PostgreSQL 10+替代serial的标准自增方案。它本质是给列绑定了一个序列,用来自动生成递增的数值,和你之前用IDENTITY(1,1)的效果完全一致。
  • Generated列:这是通用的计算列,和自增毫无关系。它的作用是基于其他列或表达式计算出当前列的值,比如你可以设置某列是col1 + col2的和,或者用函数处理后的结果。pgAdmin里的菜单就是让你选计算表达式、以及值是存储(stored)还是实时计算(virtual)。

2. 界面操作差异的原因

你看到的操作区别,是因为两者的配置逻辑不同:

  • Generated列的核心配置是计算表达式,其他选项(存储类型)是固定的几个选择,所以pgAdmin做了下拉菜单来简化操作,属于“引导式配置”;
  • Identity列的核心是序列的参数(起始值、步长、是否循环等),虽然大部分场景用(1,1),但PostgreSQL没有硬编码默认值,而是把选择权交给你(比如有些场景需要从1000开始,步长2),所以需要手动指定参数,不是它不能自动配置,而是避免强制默认不符合你的需求。

3. 该怎么选?

  • 如果你要实现SQL Server那种自增主键,直接选Identity,把起始值设为1、步长设为1,就和你之前的习惯完全匹配;
  • 要是需要做基于其他字段的计算字段,才用Generated列。

内容的提问来源于stack exchange,提问作者Pure.Krome

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 23:15:04