PostgreSQL知识总结(七)| PostgreSQL的表隐藏列详细介绍

在postgresql中,每个表都会有几个系统字段,这些字段是由系统隐含定义的。这些系统字段在psql下使用\d命令的结果中并不会显示,但请记住实际表中还存在着这些隐含字段。因为表中已隐含了某些名字的字段,所以用户定义的字段名称不能再使用这些名字,这个限制与名字是否为关键字没有关系,即使字段名称用双引号括起来也不行。
这些系统字段主要有如下:

  1. oid:行对象标识符(对象ID)。这个字段只有在创建表时使用了"with oids"或配置参数"default with oids"的值为真时才出现(系统不会给用户创建的表增加一个OID系统字段)。这个字段的类型是oid(类型名和字段名同名),在pg中就是使用OID作为各种系统表的主键,它是一个unsigned int,因此不太适合提供大数据范围内的唯一性保证和单个大表中使用也不行。(不建议在用户创建的表中使用OID字段,最好只用作系统表)。此外它生成的是全局的序列值(全局分配不是由某张表单独分派)。除了作为一个对象标识符,OID还有几个表示具体对象类型的别名,它所代表的所有对象标识符类型如下:
    在这里插入图片描述

  2. tableoid:包含本行的表的oid。对父表(该表存在有继承关系的子表)进行查询时,使用这个字段,就可以知道某一行来自父表还是子表,以及是哪个子表。 tableoid可以和 pg_class的 oid 字段连接起来获取表名字。例如:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ben@dw

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

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

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

打赏作者

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

抵扣说明:

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

余额充值