| PostgreSQL 8.0.0 中文文件(轉譯自 PostgreSQL 中國 製作的簡體中文版本) | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 41. 系統資料表 | Fast Forward | Next |
pg_attribute 資料表 儲存關於資料表的字串的訊息。資料庫裡每個資料表的每個字串都在 pg_attribute 裡有一行。 (還有用於索引,以及所有在 pg_class 裡有記錄的對象。)
術語 屬性 等效於 列/字串,使用它是歷史原因。
Table 41-7. pg_attribute 字串
| 名字 | 類型 | 引用 | 描述 |
|---|---|---|---|
| attrelid | oid | pg_class.oid | 此列/字串所屬的資料表 |
| attname | name | 字串名字 | |
| atttypid | oid | pg_type.oid | 這個字串的資料類型 |
| attstattarget | int4 | attstattarget 控制 ANALYZE 為這個字串積累的統計細節的級別。 零值資料表示不蒐集統計訊息。負數資料表示使用系統預設的統計對象。 正數值的確切訊息是和資料類型相關的。 對於標量資料類型,attstattarget 既是要蒐集的"最常用數值"的目標數目,也是要建立的柱狀圖的目標數量。 | |
| attlen | int2 | 是本字串類型 pg_type.typlen 的拷貝。 | |
| attnum | int2 | 字串數目。普通字串是從 1 開始計數的。系統字串, 比如 oid, 有(任意)正數。 | |
| attndims | int4 | 如果該字串是數組,那麼是維數,否則是 0。 (目前,一個數組的維數並未強制,因此任何非零值都資料表示 "這是一個數組"。) | |
| attcacheoff | int4 | 在磁盤上總是 -1,但是如果裝載入內存中的行描述器中, 它可能會被更新以緩衝在行中字串的偏移量。 | |
| atttypmod | int4 | atttypmod 資料在建立資料表的時候 提供的類型相關的資料(比如,一個 varchar 字串的最大長度)。 它傳遞給類型相關的輸入和長度轉換函數當做第三個參數。 其值對那些不需要 atttypmod 的類型而言通常為 -1。 | |
| attbyval | bool | 通常是這個字串類型的 pg_type.typbyval 的拷貝。 | |
| attstorage | char | 這個字串的類型的 pg_type.typstorage 的拷貝。對於可壓縮的資料類型(TOAST),這個字串可以在字串建立之後改變, 以便於控制儲存策略。 | |
| attalign | char | 這個字串的類型的 pg_type.typalign 的拷貝 | |
| attnotnull | bool | 這代資料表一個非空約束。我們可以改變這個字串以打開或者關閉這個約束。 | |
| atthasdef | bool | 這個字串有一個預設值,此時它對應 pg_attrdef 資料表裡實際定義此值的記錄。 | |
| attisdropped | bool | 這個字串已經被刪除了,不再有效。一個已經刪除的字串實際上仍然存在資料表中, 但會被分析器忽略,因此不能再透過SQL訪問。 | |
| attislocal | bool | 這個字串是局部定義在關係中的。請注意一個字串可以同時是局部定義 和繼承的。 | |
| attinhcount | int4 | 這個字串所擁有的直接祖先的個數。如果一個字串的祖先個數非零, 那麼它就不能被刪除或重命名。 |
在一個刪除了的字串的 pg_attribute 記錄裡, atttypid 重置為零,但是 attlen 和其它從 pg_type 拷貝的仍然有效。 這麼安排是為了對付後來背刪除的字串的資料類型也被刪除的情況, 因為這個時候不再有 pg_type 行了。 attlen 和其它字串可以用於解析資料表中一行內容。