表对象的标识

表对象标识

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

相关推荐
YGGP26 分钟前
【每日八股】Redis篇(二):数据结构
数据结构·数据库·redis
pk_xz12345635 分钟前
基于Python和Neo4j开发的医疗辅助诊断系统的详细实现步骤和代码示例
python·oracle·neo4j
愉悦的麻婆豆腐37 分钟前
Neo4j使用neo4j-admin导入csv数据方法
数据库·neo4j
夜泉_ly4 小时前
MySQL -安装与初识
数据库·mysql
qq_529835355 小时前
对计算机中缓存的理解和使用Redis作为缓存
数据库·redis·缓存
月光水岸New7 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6757 小时前
数据库基础1
数据库
我爱松子鱼7 小时前
mysql之规则优化器RBO
数据库·mysql
chengooooooo7 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser8 小时前
【SQL】多表查询案例
数据库·sql