PostgreSQL pg_attribute

2021-09-14 10:27 更新

目錄pg_attribute存儲有關(guān)表列的信息。數(shù)據(jù)庫中的每一個(gè)表的每一個(gè)列都恰好在pg_attribute中有一行。(這其中也會有索引的屬性項(xiàng),并且事實(shí)上所有具有pg_class項(xiàng)的對象在這里都有屬性項(xiàng)) entries.)

術(shù)語屬性等同于列,這里使用它只是出于歷史原因。

表 51.7. pg_attribute Columns

列類型

描述

attrelid oid (references pg_class.oid)

此列所屬的表

attname name

列名稱

atttypid oid (references pg_type.oid)

此列的數(shù)據(jù)類型

attstattarget int4

attstattarget控制由ANALYZE對此列收集的統(tǒng)計(jì)信息的細(xì)節(jié)層次。 0值表示不會收集任何統(tǒng)計(jì)信息。一個(gè)負(fù)值則說明直接使用系統(tǒng)默認(rèn)的目標(biāo)。正值的確切含義取決于數(shù)據(jù)類型。 對于標(biāo)量數(shù)據(jù)類型,attstattarget既是要收集的 最常見值的目標(biāo)號,也是要?jiǎng)?chuàng)建的柱狀圖容器的目標(biāo)號。

attlen int2

本列類型的pg_type.typlen一個(gè)拷貝 type

attnum int2

列的編號。一般列從1開始向上編號。系統(tǒng)列,如ctid,則擁有(任意)負(fù)值編號。

attndims int4

如果該列是一個(gè)數(shù)組類型,這里就是其維度數(shù);否則為0。 (在目前一個(gè)數(shù)組的維度數(shù)并不被強(qiáng)制,因此任何非零值都能有效地表明這是一個(gè)數(shù)組。)

attcacheoff int4

在存儲中總是為-1,但是當(dāng)被載入到一個(gè)內(nèi)存中的行描述符后,這里可能會被更新為屬性在行內(nèi)的偏移

atttypmod int4

atttypmod記錄了在表創(chuàng)建時(shí)提供的類型相關(guān)數(shù)據(jù)(例如一個(gè)varchar列的最大長度)。 它會被傳遞給類型相關(guān)的輸入函數(shù)和長度強(qiáng)制函數(shù)。對于那些不需要atttypmod的類型,這個(gè)值通常總是為-1。

attbyval bool

該列類型的pg_type.typbyval的一個(gè)拷貝

attstorage char

通常是該列類型的pg_type.typstorage的一個(gè)拷貝。 對于可TOAST的數(shù)據(jù)類型,這可以在列創(chuàng)建后被修改以控制存儲策略。

attalign char

該列類型的pg_type.typalign的一個(gè)拷貝

attnotnull bool

這表示一個(gè)非空約束。

atthasdef bool

該列有一個(gè)默認(rèn)表達(dá)式或生成的表達(dá)式,在此情況下在pg_attrdef目錄中會有一個(gè)對應(yīng)項(xiàng)來真正定義該表達(dá)式。 (檢查attgenerated以確定是默認(rèn)還是生成的表達(dá)式。)

atthasmissing bool

該列在行中完全缺失時(shí)會用到這個(gè)列的值,如果在行創(chuàng)建之后增加一個(gè)有非易失DEFAULT值的列,就會發(fā)生這種情況。 實(shí)際使用的值被存放在attmissingval列中。

attidentity char

如果是一個(gè)零字節(jié)(''),則不是一個(gè)標(biāo)識列。 否則,a = 總是生成,d = 默認(rèn)生成。

attgenerated char

如果為零字節(jié)(''),則不是生成的列。否則,s = stored。(將來可能會添加其他值。)

attisdropped bool

該列被刪除且不再有效。一個(gè)刪除的列仍然物理存在于表中,但是會被分析器忽略并因此無法通過SQL訪問。

attislocal bool

該列是由關(guān)系本地定義的。注意一個(gè)列可以同時(shí)是本地定義和繼承的。

attinhcount int4

該列的直接祖先的編號。一個(gè)具有非零編號祖先的列不能被刪除或者重命名。

attcollation oid (references pg_collation.oid)

該列被定義的排序規(guī)則,如果該列不是一個(gè)可排序數(shù)據(jù)類型則為0。

attacl aclitem[]

列級訪問權(quán)限, 如果此列上已有特別授予的權(quán)限

attoptions text[]

屬性級選項(xiàng),以keyword=value形式的字符串

attfdwoptions text[]

屬性級的外部數(shù)據(jù)包裝器選項(xiàng),以keyword=value形式的字符串

attmissingval anyarray

這個(gè)列中是一個(gè)含有一個(gè)元素的數(shù)組,其中的值被用于該列在行中完全缺失時(shí),如果在行創(chuàng)建之后增加一個(gè)有非易失DEFAULT值的列,就會發(fā)生這種情況。 只有當(dāng)atthasmissing為真時(shí)才使用這個(gè)值。如果沒有值則該列為空。


在一個(gè)被刪除的列的pg_attribute的項(xiàng)中,atttypid被重置為0,但attlen以及其他從pg_type拷貝的域仍然有效。這種安排用于處理一種情況,即被刪除列的數(shù)據(jù)類型后來被刪除,并且因此不再有相應(yīng)的pg_type行。 attlen和其他域可以被用來解釋表的一行的內(nèi)容。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號