2025年9月25日: PostgreSQL 18 釋出!
支援的版本: 當前 (18) / 17 / 16 / 15 / 14 / 13
開發版本: devel
不支援的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1

52.7. pg_attribute #

目錄 pg_attribute 儲存關於表列的資訊。資料庫中的每個表中的每一列都將有一個 pg_attribute 行。(索引以及所有具有 pg_class 條目的物件也將有屬性條目。)

屬性(attribute)一詞等同於列(column),是出於歷史原因而使用的。

表 52.7. pg_attribute

列 型別

描述

attrelid oid (引用 pg_class.oid)

該列所屬的表

attname name

列名

atttypid oid (引用 pg_type.oid)

該列的資料型別(已刪除的列為零)

attlen int2

該列型別的 pg_type.typlen 的副本

attnum int2

列的編號。普通列從 1 開始編號。系統列,例如 ctid,有(任意的)負數。

atttypmod int4

atttypmod 記錄在表建立時提供的特定於型別的資料(例如,varchar 列的最大長度)。它會被傳遞給特定於型別的輸入函式和長度強制轉換函式。對於不需要 atttypmod 的型別,該值通常為 -1。

attndims int2

如果該列是陣列型別,則維度數;否則為 0。(目前,陣列的維度數不受強制,因此任何非零值實際上都意味著“它是一個數組”。)

attbyval bool

該列型別的 pg_type.typbyval 的副本

attalign char

該列型別的 pg_type.typalign 的副本

attstorage char

通常是該列型別的 pg_type.typstorage 的副本。對於可 TOAST 的資料型別,可以在列建立後更改此項以控制儲存策略。

attcompression char

列的當前壓縮方法。通常為 '\0',表示使用當前預設設定(請參閱 default_toast_compression)。否則,'p' 選擇 pglz 壓縮,而 'l' 選擇 LZ4 壓縮。但是,每當 attstorage 不允許壓縮時,此欄位將被忽略。

attnotnull bool

此列具有一個(可能無效的)非空約束。

atthasdef bool

此列具有一個預設表示式或生成表示式,在這種情況下,pg_attrdef 目錄中將有一個對應的條目,該條目實際定義了表示式。(檢查 attgenerated 以確定這是預設值還是生成表示式。)

atthasmissing bool

此列具有一個值,當該列在行中完全缺失時使用該值,就像在行建立後新增具有非易失性 DEFAULT 值的列一樣。實際使用的值儲存在 attmissingval 列中。

attidentity char

如果為零位元組(''),則不是標識列。否則,a = 總是生成,d = 預設生成。

attgenerated char

如果為零位元組(''),則不是生成的列。否則,s = 儲存,v = 虛擬。儲存的生成列像普通列一樣被物理儲存。虛擬生成列被物理儲存為 null 值,實際值在執行時計算。

attisdropped bool

此列已被刪除,不再有效。已刪除的列仍然物理存在於表中,但會被解析器忽略,因此無法透過 SQL 訪問。

attislocal bool

此列在關係中是本地定義的。請注意,一列可以同時是本地定義和繼承的。

attinhcount int2

此列的直接祖先數量。具有非零祖先數量的列不能被刪除或重新命名。

attcollation oid (引用 pg_collation.oid)

列的定義排序規則,如果列不是可排序的資料型別,則為零

attstattarget int2

attstattarget 控制 ANALYZE 為此列累積的統計資訊的詳細程度。零值表示不應收集統計資訊。空值表示使用系統預設統計目標。正值的確切含義取決於資料型別。對於標量資料型別,attstattarget 是要收集的“最常見值”的目標數量,也是要建立的直方圖 bin 的目標數量。

attacl aclitem[]

列級別的訪問許可權,如果已授予任何特定於此列的許可權

attoptions text[]

屬性級別的選項,以“keyword=value”字串的形式

attfdwoptions text[]

屬性級別的外部資料包裝器選項,以“keyword=value”字串的形式

attmissingval anyarray

此列包含一個包含一行中列完全缺失時使用的值的單元素陣列,就像在行建立後新增具有非易失性 DEFAULT 值的列一樣。僅當 atthasmissing 為 true 時才使用該值。如果沒有值,則該列為 null。


在已刪除列的 pg_attribute 條目中,atttypid 被重置為零,但 attlen 以及從 pg_type 複製的其他欄位仍然有效。這種安排對於處理已刪除列的資料型別後來被刪除,從而不再有 pg_type 行的情況是必要的。attlen 和其他欄位可用於解釋錶行中的內容。

提交更正

如果您在文件中發現任何不正確、與您在使用特定功能時的經驗不符或需要進一步澄清的內容,請使用 此表單 報告文件問題。