隐藏列tableoid

tableoid用于从继承层次中进行查询,获取行数据来源于哪个表,可以与数据字典pg_class.oid关联获取表名。

postgres=# create table peoples(
postgres(# name text,
postgres(# cityname text,
postgres(# age int);
CREATE TABLE

postgres=# insert into peoples values ('Martin', 'Nanjing', '25');
INSERT 0 1
postgres=# select * from peoples;
  name  | cityname | age
--------+----------+-----
 Martin | Nanjing  |  25
(1 行记录)

postgres=# create table peoples2(area text) inherits(peoples);
CREATE TABLE

postgres=# insert into peoples2 values ('John', 'Nanjing', '25', 'Xinjiekou');
INSERT 0 1
postgres=# select tableoid, * from peoples;
 tableoid |  name  | cityname | age
----------+--------+----------+-----
    16411 | Martin | Nanjing  |  25
    16417 | John   | Nanjing  |  25
(2 行记录)

postgres=# select relname, oid from pg_class where oid in (16411, 16417);
 relname  |  oid
----------+-------
 peoples  | 16411
 peoples2 | 16417
(2 行记录)

--可以看到Martin行记录来源于people,John行记录来源于peoples2

而oracle中没有tableoid专有列名,可以通过dba_objects视图查询表id,对于判断行属于哪一列,rowid就是对象的id。

转载于:https://my.oschina.net/mysweet/blog/187920

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值