选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

文档 / 配置参数 / 版本和平台兼容性

CONFIGURATION PARAMETER版本和平台兼容性 / 以前的 PostgreSQL 版本

default_with_oids

默认创建带 OID 的新表。

Create new tables with OIDs by default.

布尔 会话 引入 9.0(基线) 于 12 移除 0 次默认值变更

类型
布尔bool
上下文
会话任何用户都可在会话内用 SET 修改
默认值
off
引入版本
9.0(基线)
状态
于 12 移除

PostgreSQL 11 手册 官方文档

版本轨迹

相对 PostgreSQL 10 无变化。

默认值变迁

off 9.0 – 11

默认值自 PostgreSQL 9.0 起没有变过。带单位的取值换算成了可读形式,原始的 boot_val 与单位写在悬浮提示里。

手册说明

PostgreSQL 11 手册 · 19.13 版本和平台兼容性 本站手册 官方原文

本版译文与 PostgreSQL 10 完全一致,下面就是同一段文字。

此参数控制在既未指定WITH OIDS也未指定WITHOUT OIDS时, CREATE TABLECREATE TABLE AS是否在新建表中包含 OID 列。 它也决定SELECT INTO创建的表是否包含 OID。 此参数默认为off;在PostgreSQL 8.0 及更早版本中,默认为on

在用户表中使用 OID 已被弃用,因此大多数安装应让此变量保持禁用状态。 需要为特定表使用 OID 的应用应在创建表时指定WITH OIDS。 可以启用此变量,以兼容不遵循这种做法的旧应用。

机制详解

默认创建带 OID 的新表。该参数在 PG11 仍存在,并从 PG12 起不再被识别。PostgreSQL 12 移除了用户表 OID;应改用 identity 列、序列或其他显式主键。

该参数存在时,会改变未显式写 WITH/WITHOUT OIDS 的 CREATE TABLE。表 OID 既不是稳定业务键,也不保证全局唯一;PostgreSQL 12 随用户表 OID 一并移除该功能。

升级前应联合检查 lo_compat_privileges、operator_precedence_warning、synchronize_seqscans,从配置、ALTER SYSTEM、角色/数据库设置和自动化模板中删除旧名,并先验证替代机制再启动 PG12+。

调优建议

按典型负载给出的取值思路,不是放之四海皆准的配方:实际取值要看数据量、并发度与硬件。

  • OLTP在线事务处理

    不要在 PG12+ 调优或继续下发 default_with_oids。PostgreSQL 12 移除了用户表 OID;应改用 identity 列、序列或其他显式主键。升级前扫描所有配置层并做业务回归。

  • OLAP分析与批处理

    迁移方案与 OLTP 相同;另外在长批处理、备库或大对象/扩展工作流中验证新机制,不要假定删除旧开关会保留旧行为。

  • 小规格低配实例与开发机

    直接删除旧配置并采用受支持替代项;若没有真实兼容需求,不要用脚本伪造旧行为。

常见问题

  • 在 PG12+ 配置中继续下发未知参数 default_with_oids。
  • 只删除参数名,却未迁移依赖它的应用行为。
  • 把历史默认值当作新版本替代机制的默认值。
  • 遗漏 ALTER SYSTEM、角色/数据库设置或自动化模板中的旧条目。

演化历史

相邻两个大版本之间的差异,新的在前。版本号链到该版的快照。

  1. PostgreSQL 12 ← 11 移除此参数

    该版起不再存在

逐版本快照

每个收录版本里的 7 项事实,与上一个存在的版本不同的格子带底色。版本号链到该版。

版本 默认值单位上下文类型最小值最大值枚举值
9.0 off 会话 布尔
9.1 off 会话 布尔
9.2 off 会话 布尔
9.3 off 会话 布尔
9.4 off 会话 布尔
9.5 off 会话 布尔
9.6 off 会话 布尔
10 off 会话 布尔
11 off 会话 布尔

参考资料

同类参数

参数 类型 上下文 默认值 版本变动 最近变更
Version and Platform Compatibility 版本和平台兼容性 10 个
以前的 PostgreSQL 版本 10
array_nulls 布尔 会话 on
允许在数组输入中使用 NULL 元素。 现存
backslash_quote 枚举 会话 safe_encoding
设置字符串字面量中是否允许使用反斜杠转义的单引号(\')。 现存
default_with_oids 布尔 会话 off
默认创建带 OID 的新表。 于 12 移除
escape_string_warning 布尔 会话 on
当普通字符串字面量含反斜杠转义时发出警告。 于 19 移除
lo_compat_privileges 布尔 会话(超级用户) off
启用大对象权限检查的向后兼容模式。 现存
operator_precedence_warning 布尔 会话 off
对自 PostgreSQL 9.4 起含义发生变化的表达式发出警告。 于 14 移除
quote_all_identifiers 布尔 会话 off
生成 SQL 片段时引用所有标识符。 现存
sql_inheritance 布尔 会话 on
让多种 SQL 命令默认包含继承子表。 于 10 移除
standard_conforming_strings 布尔 会话 on 9.11 次
使普通单引号字符串中的反斜杠按字面处理。 现存
synchronize_seqscans 布尔 会话 on
启用同步顺序扫描。 现存

本站手册收录 default_with_oids 的版本:1011

参数事实来自 guc.pg.center(仓库 pgsty/guc.pg.center),说明的中文取自本站手册译文,最后同步 2026-09-13。

参数事实或版本数据有误请提交到 数据仓库;本站渲染或译文的问题提交到 pgsty/pgweb