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

5.6. 系統欄位 #

每個資料表都有幾個由系統隱含定義的系統欄位。因此,這些名稱不能用作使用者定義欄位的名稱。(請注意,這些限制與名稱是否為關鍵字無關;使用引號括住名稱並不能讓您規避這些限制。)您不需要真正關心這些欄位;只要知道它們存在即可。

tableoid #

包含此列的資料表的 OID。此欄位對於從分割資料表(請參閱第 5.12 節)或繼承階層(請參閱第 5.11 節)進行選擇的查詢特別有用,因為如果沒有它,很難判斷列來自哪個個別資料表。tableoid 可以與 pg_classoid 欄位進行聯結,以取得資料表名稱。

xmin #

此列版本的插入交易的身分識別(交易 ID)。(列版本是列的個別狀態;每次更新列都會為同一邏輯列建立新的列版本。)

cmin #

插入交易中的指令識別碼(從零開始)。

xmax #

刪除交易的身分識別(交易 ID),或未刪除列版本的零。此欄位可能在可見列版本中為非零。這通常表示刪除交易尚未提交,或嘗試的刪除已回滾。

cmax #

刪除交易中的指令識別碼,或零。

ctid #

列版本在其資料表中的實際位置。請注意,儘管 ctid 可用於非常快速地找到列版本,但如果列的 ctidVACUUM FULL 更新或移動,則會變更。因此,ctid 作為長期列識別碼是無用的。主鍵應該用於識別邏輯列。

交易識別碼也是 32 位元的量。在長期使用的資料庫中,交易 ID 可能會環繞。如果具有適當的維護程序,這不是一個致命的問題;請參閱第 24 章以取得詳細資訊。但是,不建議長期依賴交易 ID 的唯一性(超過 10 億次交易)。

指令識別碼也是 32 位元的量。這會建立 232(40 億)的硬性限制SQL單一交易中的指令。實際上,此限制不是問題 - 請注意,限制是指指令的數量,而不是SQL已處理的列數。此外,只有實際修改資料庫內容的指令才會佔用指令識別碼。

提交更正

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