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

5.6. 系統列 #

每個表都有幾個由系統隱式定義的系統列。因此,這些名稱不能用作使用者定義的列名。(請注意,這些限制與該名稱是否為關鍵字無關;引用名稱也不能逃避這些限制。)您實際上不需要關心這些列;只需知道它們存在即可。

tableoid #

包含此行的表的 OID。此列對於選擇來自分割槽表(請參閱 第 5.12 節)或繼承層次結構(請參閱 第 5.11 節)的查詢特別有用,因為如果沒有它,很難知道一行來自哪個單獨的表。可以 tableoidoidpg_class 進行聯接以獲取表名。

xmin #

此行版本的插入事務的標識(事務 ID)。(行版本是行的單個狀態;行的每次更新都會為同一邏輯行建立新的行版本。)

cmin #

插入事務中的命令標識(從零開始)。

xmax #

刪除事務的標識(事務 ID),對於未刪除的行版本為零。可見的行版本中此列可能為非零。這通常表示刪除事務尚未提交,或者嘗試的刪除已被回滾。

cmax #

刪除事務中的命令標識,或零。

ctid #

行版本在表中的物理位置。請注意,儘管 ctid 可用於非常快速地定位行版本,但如果行被更新或由 VACUUM FULL 移動,其 ctid 將會更改。因此 ctid 作為長期行識別符號是無用的。應使用主鍵來標識邏輯行。

事務識別符號也是 32 位數量。在長期執行的資料庫中,事務 ID 可能會發生迴繞。在有適當的維護程式的情況下,這不是一個致命問題;有關詳細資訊,請參閱 第 24 章。但是,不建議在長期(超過十億次事務)依賴事務 ID 的唯一性。

命令識別符號也是 32 位數量。這在單個事務中建立了 232(40 億)個命令的硬性限制。SQL命令的限制,而不是處理的行的數量。此外,只有那些實際修改資料庫內容的命令才會消耗命令識別符號。SQL命令,而不是處理的行的數量。此外,只有那些實際修改資料庫內容的命令才會消耗命令識別符號。

提交更正

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