PostgreSql 获取对象 oid

在使用 PostgreSql 数据库时,发现很多时候需要查询对象的 oid, 本文记录下查询对象的 oid 的方法,后续发现更方便的方式会再更新……

获取数据库的 oid

--注意大小写敏感,要用小写
chis=# select oid,datname from pg_database where datname='syd';
  oid  | datname
-------+---------
 41351 | syd
(1 row)

chis=# select oid,datname from pg_database where datname='SYD';
 oid | datname
-----+---------
(0 rows)

获取用户或角色的 oid

--方法一:大小写敏感,要用小写
chis=# select oid,rolname from pg_authid where rolname='syd';
  oid  | rolname
-------+---------
 66934 | syd
(1 row)

chis=# select oid,rolname from pg_authid where rolname='SYD';
 oid | rolname
-----+---------
(0 rows)
--方法二:大小写不敏感,用大小写均可
chis=# select 'syd'::regrole::oid;
  oid
-------
 66934
(1 row)

chis=# select 'SYD'::regrole::oid;
  oid
-------
 66934
(1 row)

获取 schema 的 oid

--方法一:大小写敏感,要用小写
chis=# select oid,nspname from pg_namespace where nspname='comm';
  oid  | nspname
-------+---------
 16398 | comm
(1 row)

chis=# select oid,nspname from pg_namespace where nspname='COMM';
 oid | nspname
-----+---------
(0 rows)

--方法二:大小写不敏感,用大小写均可
chis=# select 'comm'::regnamespace::oid;
  oid
-------
 16398
(1 row)

chis=# select 'COMM'::regnamespace::oid;
  oid
-------
 16398
(1 row)

获取表,索引等对象的 oid

--方法一:大小写敏感,要用小写
---查询表的 oid
chis=# select oid,relname from pg_class where relname='account';
  oid  | relname
-------+---------
 66640 | account
(1 row)

chis=# select oid,relname from pg_class where relname='ACCOUNT';
 oid | relname
-----+---------
(0 rows)
--查询索引的 oid
chis=# select oid,relname from pg_class where relname='pk_account_id';
  oid  |    relname
-------+---------------
 66646 | pk_account_id
(1 row)

chis=# select oid,relname from pg_class where relname='PK_ACCOUNT_ID';
 oid | relname
-----+---------
(0 rows)
--方法二:大小写不敏感,用大小写均可(注意需要指定schema名,不然表在当前schema不可见时,会报错)
---查询表的 oid
chis=# select 'account'::regclass::oid;
ERROR:  relation "account" does not exist
LINE 1: select 'account'::regclass::oid;
               ^
chis=# select 'comm.account'::regclass::oid;
  oid
-------
 66640
(1 row)

chis=# select 'COMM.ACCOUNT'::regclass::oid;
  oid
-------
 66640
(1 row)
---查询索引的 oid
chis=# select 'pk_account_id'::regclass::oid;
ERROR:  relation "pk_account_id" does not exist
LINE 1: select 'pk_account_id'::regclass::oid;
                ^
chis=# select 'comm.pk_account_id'::regclass::oid;
  oid
-------
 66646
(1 row)

chis=# select 'COMM.PK_ACCOUNT_ID'::regclass::oid;
  oid
-------
 66646
(1 row)

获取函数的 oid

--方法一:大小写敏感,要用小写
chis=# select oid,proname from pg_proc where proname='out_tally_pepole_count';
  oid  |        proname
-------+------------------------
 16464 | out_tally_pepole_count
(1 row)

chis=# select oid,proname from pg_proc where proname='OUT_TALLY_PEPOLE_COUNT';
 oid | proname
-----+---------
(0 rows)
--方法二:大小写不敏感,用大小写均可(注意需要指定schema名,不然表在当前schema不可见时,会报错)
chis=# select 'out_tally_pepole_count'::regproc::oid;
ERROR:  function "out_tally_pepole_count" does not exist
LINE 1: select 'out_tally_pepole_count'::regproc::oid;
               ^
chis=# select 'finance.out_tally_pepole_count'::regproc::oid;
  oid
-------
 16464
(1 row)

chis=# select 'FINANCE.OUT_TALLY_PEPOLE_COUNT'::regproc::oid;
  oid
-------
 16464
(1 row)
### 回答1: OID对象标识符)是一种数据类型,用于在数据中标识列。它是一个整数值,唯一标识数据中的每一行。你可以在创建数据时为每一列指定一个 OID,也可以在之后添加 OID 列。 举个例子,如果你想在数据中创建一个 OID 列,可以使用如下 SQL 语句: ``` ALTER TABLE table_name ADD COLUMN oid serial PRIMARY KEY; ``` 这样就会在数据中添加一个名为 "oid" 的列,它是一个整数类型的 OID,并且自动生成一个唯一的值来标识数据中的每一行。 注意:OID 只在 PostgreSQL 数据库中使用,并不是所有数据库系统都支持。如果你使用的是其他数据库系统,可能需要使用其他方法来标识数据中的列。 ### 回答2: OID(Object Identifier)是一种用于标识数据库中对象(例如、列、索引等)的唯一标识符。在用于标注数据中的列时,可以按照以下方法使用OID。 首先,为了使用OID标注数据中的列,需要在创建的时候为该列添加一个OID类型的列。例如,可以使用以下语句创建一个包含OID列的: CREATE TABLE 名 ( 列名1 数据类型1, 列名2 数据类型2, ... OID 列名 OID类型 ); 其次,当向中插入数据时,OID列会自动生成一个唯一的标识符。可以使用以下语句来插入数据,并获取生成的OID值: INSERT INTO 名 (列名1, 列名2, ...)VALUES (值1, 值2, ...)RETURNING OID; 再次,要查询带有OID列的数据,可以使用以下语句来获取特定OID值的行: SELECT * FROM 名 WHERE OID = 特定OID值; 如果需要查询中所有行的数据及其对应的OID值,可以使用以下语句: SELECT OID, * FROM 名; 最后,如果需要更新带有OID列的数据,可以使用以下语句根据特定OID值进行更新: UPDATE 名 SET 列名 = 值 WHERE OID = 特定OID值; 总之,通过为数据中的列添加OID列,可以使用OID作为唯一标识符来标注数据中的列。这样可以方便地对数据进行查询、更新和标识。 ### 回答3: OID对象标识符)是一种用于标识数据中的特定列的唯一标识符。在数据的设计中,可以使用OID来标注列,以便在需要时对其进行唯一标识和引用。 要在数据中标注列的OID,可以按照以下步骤进行操作: 1. 首先,确定所需的列中需要标注OID的部分。通常,在一个数据中,每一列都有一个唯一的名称来标识它。选择需要唯一标识和引用的列。 2. 在设计数据时,创建包含OID的新列。可以将这个列命名为“OID”或其他类似的标识符。这个列应使用适当的数据类型来存储唯一的标识符。 3. 对于每一行数据,在OID列中分配一个唯一的标识符。可以使用自增或其他算法来确保每个标识符都是唯一的。 4. 在需要引用列的地方,使用对应的OID值。OID充当一个“指针”或“引用”,用于在不同的或列之间建立关联关系。 5. 当需要访问某个特定的列时,可以根据其OID值进行查找和定位。通过使用正确的OID值,可以找到并操作中的相应列。 标注数据中的列的OID,可以提供一种简单而有效的方法来唯一标识和引用列。通过使用OID,可以轻松地在不同的中建立关联关系,并对列进行定位和操作。同时,OID的唯一性还可以确保列之间的数据完整性和一致性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

脑子进水养啥鱼?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值