PostgreSQL如何去重,如何获知一张表的隐藏属性(字段)

本文详细介绍了如何在PostgreSQL中获取一张表的隐藏属性,包括使用pg_class和pg_attribute系统表查询表名、oid、属性等信息,并解释了隐藏属性如cmax、cmin、ctid、tableoid、xmax、xmin的含义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PostgreSQL中如何获知一张表的隐藏属性(字段)

1.创建一张表test_hide_attr,通过这张表获知PostgreSQL表的隐藏属性。

1
2
test_zqs=# create table test_hide_attr(hide int4); 
CREATE TABLE

2.查询PostgreSQL的系统表pg_class,该表存储数据库对象信息,如表、视图、索引等。一个元组存储一个数据库对象信息,并且每一个都会被分配一个oid作为唯一标识,该oid将作为该元组的一个隐藏属性存储。其中relname字段代表数据库对象的名称。

1
2
3
4
5
test_zqs=# select oid,relname from pg_class where relname='test_hide_attr'
  oid  |    relname      
-------+---------------- 
 17168 | test_hide_attr 
(1 row)

3.查询系统表pg_attribute,该表用来存储表的属性信息,包括隐藏属性,一个属性对应一个元组。其中,attrelid代表属性所属表的oid,而attname则代表属性名称。

1
2
3
4
5
6
7
8
9
10
11
test_zqs=# select attrelid,attname from pg_attribute where attrelid=17168; 
 attrelid | attname   
----------+---------- 
  17168 | cmax 
  17168 | cmin 
  17168 | ctid 
  17168 | hide 
  17168 | tableoid 
  17168 | xmax 
  17168 | xmin 
(7 rows)

4.对表test_hide_attr,实际用户仅创建了hide字段,其余字段均为该表的隐藏字段。

1
2
3
4
5
6
7
8
9
test_zqs=# \d test_hide_attr 
Table "public.test_hide_attr"
 Column |  Type   | Modifiers  
--------+---------+----------- 
 hide   | integer |  
test_zqs=# select tableoid from test_hide_attr; 
 tableoid  
---------- 
(0 rows)

5.查看表隐藏属性tableoidpg_class隐藏属性oidpg_attribute属性attrelid三者之间是相同的(对同一张表来说)

1
2
3
4
5
6
7
test_zqs=# insert into test_hide_attr values(1); 
INSERT 0 1 
test_zqs=# select cmax,cmin,ctid,hide,tableoid,xmax,xmin from test_hide_attr; 
 cmax | cmin | ctid  | hide | tableoid | xmax | xmin  
------+------+-------+------+----------+------+------ 
    0 |         0 | (0,1) |   1 |  17168    |    0   | 2260 
(1 row)

下面,对表的隐藏属性所代表的含义做了些整理,见下文



delete from emp a
where a.ctid <>
 (
select min(b.ctid) from emp b
where a.id = b.id
 );

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值