表对象的标识

表对象标识

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可能会发生变化。

相关推荐
知识分享小能手15 分钟前
Redis入门学习教程,从入门到精通,Redis 数据操作:知识点详解与代码实战(2)
数据库·redis·学习
m0_6625779722 分钟前
Python迭代器(Iterator)揭秘:for循环背后的故事
jvm·数据库·python
似水明俊德26 分钟前
12-C#
开发语言·数据库·oracle·c#
FirstFrost --sy1 小时前
MySQL关于表的操作
数据库·mysql
青槿吖2 小时前
【保姆级教程】Spring事务控制通关指南:XML+注解双版本,避坑指南全奉上
xml·java·开发语言·数据库·sql·spring·mybatis
浪潮IT馆2 小时前
Windows 达梦 8(DM8)数据库完整安装教程 + 命令行导入 .dmp 文件完整指南
数据库·windows
Dylan~~~2 小时前
Redis MCP Server:让 AI 拥有“持久记忆“的革命性方案
数据库·人工智能·redis
小小怪7502 小时前
超越Python:下一步该学什么编程语言?
jvm·数据库·python
Y001112362 小时前
Day8-MySQL-多表查询-1
数据库·sql·mysql
2501_945423543 小时前
数据分析与科学计算
jvm·数据库·python