您好,登錄后才能下訂單哦!
PostgreSQL表中的隱含字段是什么,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
oid: 行的對象標識符(對象ID)。
注意:這個字段只有在創建表的時候使用了WITH OIDS,或者是設置了配置參數default_with_oids時出現, 這個字段的類型是oid(和字段同名)。 OID是32位的量,是在同一個集群內通用的計數器上賦值的。對于一個大型或者長時間使用的數據庫, 這個計數器是有可能重疊的。因此,OID是唯一的是非常錯誤的想法.
tableoid: 包含本行的表的OID。這個字段對那些從繼承層次中選取的查詢特別有用,因為如果沒有它的話,我們就很難說明一行來自哪個獨立的表。tableoid可以和pg_class的oid字段連接起來獲取表名字。
xmin: 插入該行版本的事務的標識(事務ID)。
cmin: 在插入事務內部的命令標識(從零開始)。
xmax: 刪除事務的標識(事務ID),如果不是被刪除的行版本,那么是零。
cmax: 在刪除事務內部的命令標識符,或者是零。
ctid: 一個行版本在它所處的表內的物理位置
注意,盡管ctid可以用于非常快速地定位行版本,但每次VACUUM FULL之后,一個行的ctid都會被更新或者移動。 因此ctid是不能作為長期的行標識符的。
數據表的字段信息都保存在pg_attributed 表中,數據表則保存在pg_class中,所以可以結合這兩個查找到對應的表的所有字段
案例:
testdb=# create table table_oid (id int, name varchar(64)) with(oids=true); 創建帶有oid的表
執行查找操作
testdb=# select oid, tableoid, tableoid::regclass as tablename, cmax, cmin, xmin, xmax, ctid, * from table_oid;
看完上述內容,你們掌握PostgreSQL表中的隱含字段是什么的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。