支援的版本:目前 (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

51.7. pg_attribute #

目錄 pg_attribute 儲存關於表格欄位的資訊。資料庫中每個表格的每個欄位都恰好有一個 pg_attribute 列。(索引也會有屬性條目,實際上,所有具有 pg_class 條目的物件也會有。)

術語「屬性」等同於「欄位」,由於歷史原因而使用。

表 51.7. pg_attribute 欄位

欄位名稱

描述

attrelid oid(參考 pg_class.oid

此欄位所屬的表格

attname name

欄位名稱

atttypid oid(參考 pg_type.oid

此欄位的資料類型(已刪除欄位的資料類型為零)

attlen int2

此欄位類型的 pg_type.typlen 的副本

attnum int2

欄位的編號。一般欄位從 1 開始編號。系統欄位(例如 ctid)具有(任意)負數編號。

attcacheoff int4

在儲存體中始終為 -1,但載入到記憶體中的列描述符時,可能會更新此欄位以快取列內屬性的偏移量

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 = 儲存。(將來可能會新增其他值。)

attisdropped bool

此欄位已刪除且不再有效。已刪除的欄位仍然以物理方式存在於表格中,但解析器會忽略該欄位,因此無法透過 SQL 存取該欄位。

attislocal bool

此欄位在本機關係中定義。請注意,欄位可以同時在本機定義和繼承。

attinhcount int2

此欄位直接繼承的祖先數量。祖先數量非零的欄位不能被刪除或重新命名。

attcollation oid (參照 pg_collation.oid)

欄位的定義排序規則 (collation),如果欄位不是可排序的資料類型,則為零

attstattarget int2

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

attacl aclitem[]

欄位層級的存取權限,如果已特別授予此欄位權限

attoptions text[]

屬性層級的選項,以 keyword=value 字串表示

attfdwoptions text[]

屬性層級的外部資料包裝器 (foreign data wrapper) 選項,以 keyword=value 字串表示

attmissingval anyarray

此欄位有一個單一元素的陣列,其中包含當該欄位完全從資料列中遺失時使用的值,例如在建立資料列後使用非揮發性的 DEFAULT 值新增欄位時。只有在 atthasmissing 為 true 時才會使用該值。如果沒有值,則欄位為 null。


在已刪除欄位的 pg_attribute 條目中,atttypid 會重設為零,但 attlen 和從 pg_type 複製的其他欄位仍然有效。這種安排是為了應付已刪除欄位的資料類型後來也被刪除的情況,因此不再有 pg_type 資料列。attlen 和其他欄位可用於解釋表的資料列內容。

提交更正

如果您在文件中發現任何不正確之處、與您使用特定功能的經驗不符或需要進一步澄清的地方,請使用此表格回報文件問題。