熟悉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. ansible安装配置及基本用法

    ansiblle具有如下特点: 1.部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作: 2.默认使用SSH协议对设备进行管理: 3.主从集中化管理: 4.配置简单.功能强大.扩展性强 ...

  2. Java 常用Set集合和常用Map集合

    目录 常用Set集合 Set集合的特点 HashSet 创建对象 常用方法 遍历 常用Map集合 Map集合的概述 HashMap 创建对象 常用方法 遍历 HashMap的key去重原理 常用Set ...

  3. Tapdata 实时数据中台在智慧教育中的实践

      摘要:随着教育信息化的推进,智慧校园建设兴起,但在实施过程中面临数据孤岛.应用繁多.数据再利用等方面挑战,而 Tapdata 的实时数据中台解决方案,能够高效地解决智慧校园实施中的基础数据问题. ...

  4. Identity Server 4客户端认证控制访问API

    项目源码: 链接:https://pan.baidu.com/s/1H3Y0ct8xgfVkgq4XsniqFA 提取码:nzl3 一.说明 我们将定义一个api和要访问它的客户端,客户端将在iden ...

  5. 项目git commit时卡主不良代码:husky让Git检查代码规范化工作

    看完 <前端规范之Git工作流规范(Husky + Commitlint + Lint-staged) https://www.cnblogs.com/Yellow-ice/p/15349873 ...

  6. android studio取消设置代理

    看标题感觉就是一个简单的设置,其实只是个大坑啊 https://www.jianshu.com/p/bb6d2bcdd5b5 android studio内虽然设置了 no proxy,但是没起作用, ...

  7. war包解压与压缩

    解压:jar -xvf ROOT.war 压缩:jar -cvfM0 ROOT.war ./

  8. 【CSP-J 2021】总结

    前言:程不在长,能过则行.码不在多,无虫则灵.斯是信竞,惟吾爆零.线段维护快,树状跳的勤.数论剩余系,图论前向星.无数竞之推理,无物竞之劳形.大佬楼教主,超奆姚期智,神犇云:您太强了. 早上5:00就 ...

  9. 数据类型 简单扩展(Java)

    public class HelloWorld { public static void main(String[] args) { //整数拓展 进制 二进制0b 十进制 八进制0 十六进制0x i ...

  10. Harbor企业级私服Docker镜像仓库搭建及应用

    一.简介 Docker Hub作为Docker默认官方公共镜像,如果想要自己搭建私有镜像,Harbor是企业级镜像库非常好的选择. 所谓私有仓库,也就是在本地(局域网)搭建的一个类似公共仓库的东西,搭 ...