【PostgreSQL】OID(Object Identifier:オブジェクト識別子)とは

2021年8月8日PostgreSQLその他

OID(Object Identifier:オブジェクト識別子)とは

いまさら感は否めないですが、OIDについて調べたことのメモです。

OIDとは、オブジェクト識別子といいPostgreSQLの内部で管理する値です。

 

特徴をまとめると次の通り

・ データベース、テーブル、ロール、関数、操作、データ型などに割り振られる

※ テーブル作成時の『WITH OIDS』はPostgreSQL12で廃止

・ 0は使わない(0は無効な値の扱い)。符号なし4バイト(最大値:4,294,967,295)の値をとる

・ OIDは一周して同じ値をとる場合があるため、一意であると仮定してはならない

・ 主キーを持たないテーブル、重複行があるテーブルなどに有効

 

 

OIDを取得するSQL

各OIDを取得するSQLです。

--データベースのoidを取得する
select datid,datname from pg_stat_database;

--テーブルのoidを取得する
select relid,relname from pg_stat_all_tables;

--ユーザー(ロール)のoidを取得する
select oid,* from pg_roles;