表对象的标识

表对象标识

kingbase中表作为数据库对象具有一个系统内部的唯一标识符,这个标识符被称为oid(对象标识符),它是kingbase用来在整个数据集群中唯一地标识每个数据库对象的一个字段。对于表来说,其OID可以在系统目录表sys_class中找到。

oid是否会变化

一般情况下,对表进行dml操作,表的oid是不会发生变化的。但是如果对表进行ddl操作,表oid是否会变化呢?接下来我们测试一下。

复制代码
test=# create table test_oid (id int);
CREATE TABLE
test=# select oid from sys_class where relname ='test_oid' and relkind='r';
  oid
-------
 16390
 test=# alter table test_oid rename TO test_oid_new;
ALTER TABLE
test=# select oid from sys_class where relname ='test_oid_new' and relkind='r';
  oid
-------
 16390
 test=# truncate test_oid_new ;
TRUNCATE TABLE
test=# select oid from sys_class where relname ='test_oid_new' and relkind='r';
  oid
-------
 16390
 test=# drop table test_oid_new ;
DROP TABLE
test=# create table test_oid (id int);
CREATE TABLE
test=# select oid from sys_class where relname ='test_oid' and relkind='r';
  oid
-------
 16395

通过测试,表的oid只有在drop后重建回发生变化,truncate table oid不会改变

mysql 没有类似kingbase oid或pg oid类似的对象标识。

oracle 中表对象的标识由object_id和data_object_id,truncate操作object_id不会发生变化,data_object_id可能会发生变化。

相关推荐
Linux运维技术栈1 分钟前
生产环境资源占用过高排查实战:从Heap Dump到全链路优化
java·服务器·网络·数据库·程序
jackletter4 分钟前
五大关系数据库(sqlserver、mysql、oracle、pgsql、sqlite)如何结合c#存取时间
mysql·oracle·sqlserver
不想画图4 分钟前
数据库概念和编译安装mysql流程
linux·数据库·mysql
默恋~微凉6 分钟前
数据库与安装
数据库
沐雨风栉7 分钟前
被局域网困住的文件?cpolar让 Go File 随时随地能用
运维·服务器·开发语言·数据库·后端·缓存·golang
e***87709 分钟前
【Redis】centos7 systemctl 启动 Redis 失败
数据库·redis·缓存
徐同保10 分钟前
n8n项目node后端sqlite相关的
java·数据库·sqlite
一点事11 分钟前
oracle:创建表空间、用户和授权
数据库·oracle
w***744014 分钟前
使用python进行PostgreSQL 数据库连接
数据库·python·postgresql
hhwyqwqhhwy15 分钟前
【无标题】
数据库