pg表中的系統列

2021-07-10 09:20:50 字數 1398 閱讀 6408

oid:物件id,預設是隱藏不顯示的,在建立表的時候使用了with oids會顯示這個列『

select oid.* from t_test;

********** 錯誤 **********

error: column "oid" does not exist

sql 狀態: 42703

字元:8

create table t_test (id integer,name text) with oids;

select oid,* from t_test;

16451;1;"bai"

create table as 不支援with oids

有時候知道了oid,需要看下是哪個物件

select oid,relname,relkind from pg_class where relname='t_test';

16445;"t_test";"r"

select 16445::regclass;

"t_test"

要檢視這個表有哪些列

select * from pg_attribute where attrelid='t_test'::regclass;

16445;"tableoid";26;0;4;-7;0;-1;-1;t;"p";"i";t;f;f;t;0;0;"";"";""

16445;"cmax";29;0;4;-6;0;-1;-1;t;"p";"i";t;f;f;t;0;0;"";"";""

16445;"xmax";28;0;4;-5;0;-1;-1;t;"p";"i";t;f;f;t;0;0;"";"";""

16445;"cmin";29;0;4;-4;0;-1;-1;t;"p";"i";t;f;f;t;0;0;"";"";""

16445;"xmin";28;0;4;-3;0;-1;-1;t;"p";"i";t;f;f;t;0;0;"";"";""

16445;"oid";26;0;4;-2;0;-1;-1;t;"p";"i";t;f;f;t;0;0;"";"";""

16445;"ctid";27;0;6;-1;0;-1;-1;f;"p";"s";t;f;f;t;0;0;"";"";""

16445;"id";23;-1;4;1;0;-1;-1;t;"p";"i";f;f;f;t;0;0;"";"";""

16445;"name";25;-1;-1;2;0;-1;-1;f;"x";"i";f;f;f;t;0;100;"";"";""

ctid表示資料行在表內的物理位置,型別是tid,zai vaccum full之後,行在物理塊中的位置會發生改變,所以ctid不能作為行識別符號使用。

select ctid,id from t_test;

(0,1);1

括號中的值,0代表物理塊號,第二個數字代表在物理塊中的行號。

PG系統表之pg class

pg class記錄表 索引 序列 檢視等物件的資訊。pg class 名稱型別 引用描述 oidoid 行識別符號 relnamename 表 索引 檢視等的名字 relnamespaceoidpg namespace.oid包含該關係的名字空間的oid reltypeoidpg type.oid...

PG的規則系統

規則系統 規則系統 查詢重寫規劃的系統。從使用上說,規則系統上的一些功能也可以通過函式和觸發器來實現,但規則系統與觸發器完全不同,它是在執行前把使用者發過來的sql通過內部的規則定義改變成另乙個sql後再執行的一種方式 select規則 pg檢視是通過select規則實現的,建立檢視的命令 crea...

修改表中的列

更改列的名稱應當使用系統的儲存過程 sp rename,而不是 alter table 語句。sp rename 用於修改當前資料庫中使用者所建立物件的名稱,包括表 索引 列 別名資料型別或 microsoft.netframewoek 公共語言執行 cir 時使用者定義資料型別。sp rename...