您好,登錄后才能下訂單哦!
不懂postgresql中oid指的是什么?其實想解決這個問題也不難,下面讓小編帶著大家一起學習怎么去解決,希望大家閱讀完這篇文章后大所收獲。
行對象標識符(對象ID),這個字段只有在創建表時使用了“with oids”或配置參數“default_with_oids”的值為真時才出現,這個字段的類型是oid(類型名與字段名同名)。
PostgreSQL在內部使用對象標識符(oid)作為系統表的主鍵。系統不會給用戶創建的表增加一個oid字段。oid類型用一個四字節的無符號整數實現,不能提供大數據范圍內的唯一性保證,甚至在單個大表中也不行。因此PostgreSQL官方不鼓勵在用戶創建的表中使用oid字段。
oid字段生成的序列值是全局的,可以使用以下例子進行驗證:
--創建帶oid的表
mydb=# create table t1(id int) with oids; CREATE TABLE mydb=# create table t2(id int) with oids; CREATE TABLE
--表t1插入數據
mydb=# insert into t1 values(10); INSERT 32919 1
--查詢表t1的oid
mydb=# select oid,id from t1; oid | id ------+---- 32919 | 10 (1 row)
--表t2插入數據
mydb=# insert into t2 values(10); INSERT 32920 1
--查詢表t2的oid
mydb=# select oid,id from t2; oid | id -----+---- 32920| 10 (1 row)
--重復上面過程
mydb=# insert into t1 values(11); INSERT 32921 1 mydb=# select oid,id from t1; oid | id ------+---- 32919 | 10 32921 | 11 (2 rows) mydb=# insert into t2 values(11); INSERT 32922 1 mydb=# select oid,id from t2; oid | id ------+---- 32920 | 10 32922 | 11 (2 rows)
由以上可以看出,oid是全局分配的。
表(包括toast表)、索引、視圖的對象標識符就是系統表pg_class的oid字段的值,如下:
mydb=# select oid,relname,relkind from pg_class where relname like 't_'; oid | relname | relkind ------+---------+--------- 32913 | t1 | r 32916 | t2 | r (2 rows)
感謝你能夠認真閱讀完這篇文章,希望小編分享postgresql中oid指的是什么內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。