熟悉PostgreSQL的都知道,PG12 开始,不再支持OID伪列。KingbaseES 为了保证与旧版本兼容,特增加了OID 隐含列的支持。

  • R3版本:OID 是整个数据库共用的“序列”对象;是4字节的无符号整型,其最大值40亿;会循环,不能使用OID来保证数据唯一,需要唯一性索引保证数据唯一;
  • R6版本:OID 是特定表对象私有的序列,在创建表时,会顺带创建序列;序列的最大值是 2147483647 , 不会循环;要想保证OID唯一,同样需要创建唯一索引;

参数 default_with_oids 默认为 off ,表示默认建表不带 OID,但可以在建表时 加 with OIDS选项。

可以对OID 创建索引:create index ind_tab3 on tab3(oid);

隐含列

隐含列为表中各个列的一个特殊的属性,可以在建表过程中指定,也可以通过表的ALTER 语句变更某一列的隐含属性,具体语法可以参考创建表语法和ALTER TABLE 语法。

CREATE TABLE IMPLICT_T1(
OID INT INVISIBLE,
B INT,
);
ALTER TABLE IMPLICT_T1 MODIFY OID VISIBLE;
ALTER TABLE IMPLICT_T1 MODIFY NAME INVISIBLE;

如果一个列被标记为隐含列之后,所有非指定该列的DML 行为,例如SELECT *、COPY、bulkload 等等,都会忽略该列。而所有指定该列的语句,都会命中该列。

-- INSERT 语句需要指定隐含列
INSERT INTO IMPLICT_T1(OID, B, NAME) VALUES(1, 2, 'IMPLICT');

-- 查询语句不指定隐含列,将忽略该列
SELECT * FROM IMPLICT_T1;
postgres=# select * from implict_t1;
b | name
---+---------
2 | implict
(1 row)

参考Oracle 的特性,所有列都赋予了一个COLUMN ID 的属性,COLUMN ID 从1 开始,如果某一列被设置为隐含列,那么它的COLUMN ID 则设置为NULL。

OID 与隐含列的更多相关文章

  1. oracle 12c中的隐含列

      Invisible Columns 使用select * from ,desc 等看不到该列, DROP TABLE tab1 PURGE; CREATE TABLE tab1 ( id NUMB ...

  2. PostgreSQL隐藏字段tableoid

    问题来源: 今天群里有人问:tableoid字段在每行都有,而且一个表里面的值是重复的,这样不合理...... 因此做了一些分析: 1)创建了一个表 apple=# \d test_time Tabl ...

  3. PostgreSQL隐藏字段

    1)创建了一个表 apple=# \d test_time Table "public.test_time" Column | Type | Modifiers --------+ ...

  4. 1Z0-050

    QUESTION 13 View the Exhibit.Examine the following command that is executed for the TRANSPORT table ...

  5. 理解 Statement 和 PreparedStatement

    java,servlet中的PreparedStatement 接口继承了Statement,并与之在两方面有所不同:有人主张,在JDBC应用中,如果你已经是稍有水平开发者,你就应该始终以Prepar ...

  6. SHARE NOTHING SHARE EVERYTHING

    http://mp.weixin.qq.com/s?__biz=MjM5ODYwMjI2MA==&mid=2649736156&idx=1&sn=23931f48282f6ef ...

  7. Oracle数据库入门——物化视图日志结构

    物化视图的快速刷新要求基本必须建立物化视图日志,这篇文章简单描述一下物化视图日志中各个字段的含义和用途. 物化视图日志的名称为MLOG$_后面跟基表的名称,如果表名的长度超过20位,则只取前20位,当 ...

  8. oracle在线重定义表

    在一个高可用系统中,如果需要改变一个表的定义是一件比较棘手的问题,尤其是对于7×24系统.Oracle提供的基本语法基本可以满足一般性修改,但是对于把普通堆表改为分区表,把索引组织表修改为堆表等操作就 ...

  9. 深入 理解 Statement 和 PreparedStatement

    一.使用Statement而不是PreparedStatement对象 JDBC驱动的最佳化是基于使用的是什么功能. 选择PreparedStatement还是Statement取决于你要怎么使用它们 ...

随机推荐

  1. Python Excel 操作

    1.Excel Code import os import time import re import win32com.client def dealpath(pathname='') -> ...

  2. WPF开发随笔收录-心电图曲线绘制

    一.前言 项目中之前涉及到胎儿心率图曲线的绘制,最近项目中还需要添加心电曲线和血样曲线的绘制功能.今天就来分享一下心电曲线的绘制方式: 二.正文 1.胎儿心率曲线的绘制是通过DrawingVisual ...

  3. 03 转换css元素的类别

    03 转换css元素的类别 通过设置display属性 属性 作用 block 块级 inline 行内 inline-block 行内块级 接来下 就跟着小demo来学习吧! 不懂可以看看!!!什么 ...

  4. 会话技术 Cookie+Session

    会话:这种在多次HTTP连接间维护用户与同一用户发出的不同请求之间关联的情况称为维护一个会话(session) 一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开: 功能:在一次会话 ...

  5. 搭建ceph分布式文件系统

      1. 准备4台虚拟机 ceph 192.168.66.93 管理osd,mon节点 ceph-node1 192.168.66.94 osd节点 ceph-node2 192.168.66.95 ...

  6. 013(oulipo)

    题目:http://ybt.ssoier.cn:8088/problem_show.php?pid=1455 题目描述:在母串里找子串出现的次数 题目思路:与字符串的搜索有关那就立刻找到哈希 从s[1 ...

  7. 重磅硬核 | 一文聊透对象在 JVM 中的内存布局,以及内存对齐和压缩指针的原理及应用

    欢迎关注公众号:bin的技术小屋 大家好,我是bin,又到了每周我们见面的时刻了,我的公众号在1月10号那天发布了第一篇文章<从内核角度看IO模型的演变>,在这篇文章中我们通过图解的方式以 ...

  8. Identity Server 4资源拥有者密码认证控制访问API

    基于上一篇文章中的代码进行继续延伸,只需要小小的改动即可,不明白的地方可以先看看本人上一篇文章及源码: Identity Server 4客户端认证控制访问API 一.QuickStartIdenti ...

  9. Java开发学习(十二)----基于注解开发依赖注入

    Spring为了使用注解简化开发,并没有提供构造函数注入.setter注入对应的注解,只提供了自动装配的注解实现. 1.环境准备 首先准备环境: 创建一个Maven项目 pom.xml添加Spring ...

  10. 如何在Excel/WPS表格中批量查询顺丰快递信息?

    如何在Excel/WPS表格中批量查询顺丰快递信息? 上期我们讲了如何在Excel/WPS表格中批量查询快递信息(还不知道的小伙伴可以看这里:https://zhuanlan.zhihu.com/p/ ...