博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle 内置数据类型 -- ROWID
阅读量:4050 次
发布时间:2019-05-25

本文共 1041 字,大约阅读时间需要 3 分钟。

-- Start

在数据库中,每一行都有一个地址,我们可以查询伪列 ROWID 来得到这个值。

CREATE TABLE TEST(	NAME VARCHAR(10));INSERT INTO TEST VALUES ('TEST');SELECT ROWID, NAME FROM TEST;-- 结果ROWID               NAMEAAAFCoAAEAAAASuAAA	TEST
这个值看上去是一个字符串,但事实上,它的类型是 ROWID,我们可以定义一个列,它的类型为 ROWID。

CREATE TABLE TEST(  NAME        VARCHAR(10),  LINE_ID     ROWID         NULL);INSERT INTO TEST (NAME) VALUES ('TEST');UPDATE TEST SET LINE_ID = ROWID;SELECT ROWID, LINE_ID, NAME FROM TEST;-- 结果ROWID                   LINE_ID                 NAMEAAAFCpAAEAAAAS2AAA	AAAFCpAAEAAAAS2AAA	TEST
对于某些表,如索引组织表,由于它存储在索引的叶子节点上,可以移动,也就意味着它的物理地址可能会变。为了确保返回的 ROWID 不发生变化,Oracle 会根据主键生产一个逻辑的 ROWID, 此时 ROWID 的数据类型是 UROWID.

CREATE TABLE TEST(	NAME        VARCHAR(10) PRIMARY KEY,	VALUE       VARCHAR(10)) ORGANIZATION INDEX;INSERT INTO TEST (NAME, VALUE) VALUES ('KEY', 'VALUE');CREATE TABLE LINE(  LINE_ID       UROWID(60));INSERT INTO LINESELECT ROWID FROM TEST;SELECT * FROM LINE;-- 结果LINE_ID*BAEABMMDS0VZ/g

--更多参见:

-- 声明:转载请注明出处

-- Last edited on 2015-01-01

-- Created by ShangBo on 2014-12-31

-- End

你可能感兴趣的文章
如此调用
查看>>
计算机的发展史
查看>>
带WiringPi库的交叉编译如何处理一
查看>>
带WiringPi库的交叉笔译如何处理二之软链接概念
查看>>
Spring事务的七种传播行为
查看>>
ES写入找不到主节点问题排查
查看>>
Java8 HashMap集合解析
查看>>
欢迎使用CSDN-markdown编辑器
查看>>
Android计算器实现源码分析
查看>>
Android系统构架
查看>>
Android 跨应用程序访问窗口知识点总结
查看>>
各种排序算法的分析及java实现
查看>>
SSH框架总结(框架分析+环境搭建+实例源码下载)
查看>>
自定义 select 下拉框 多选插件
查看>>
js获取url链接携带的参数值
查看>>
gdb 调试core dump
查看>>
gdb debug tips
查看>>
arm linux 生成火焰图
查看>>
linux和windows内存布局验证
查看>>
linux insmod error -1 required key invalid
查看>>