暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

达梦伪列的学习实践

杜小台 2025-04-15
617

1达梦伪列
1.1文档描述
DM8_SQL语言使用手册中对除了伪列是这样描述的除了层次查询相关伪列和 ROWNUM 中介绍的伪列外,DM 中还提供包括ROWID、UID、USER、TRXID 等伪列。
伪列从语法上和表中的列很相似,查询时能够返回一个值,但实际上在表中并不存在。
用户可以对伪列进行查询,但不能插入、更新和删除它们的值。DM 支持的伪列有:ROWID,USER,UID,TRXID、ROWNUM 等。(用初始示例库来演示)。

1.2ROWID
DM 中行标识符 ROWID 用来标识数据库基表中每一条记录的唯一键值,标识了数据记录的确切的存储位置。ROWID 由 18 位字符组成,分别为“4 位站点号+6 位分区号+8 位物理行号”。如果是单机则 4 位站点号为 AAAA,即 0。如果是非分区表,则 6 位分区号为 AAAAAA,即 0。
1.2.1查看rowid
select
rowid,
DEPARTMENT_ID,
DEPARTMENT_NAME,
MANAGER_ID,
LOCATION_ID
from dmhr.DEPARTMENT
image.png
1.2.2通过ROWID来过滤数据
select
rowid,
DEPARTMENT_ID,
DEPARTMENT_NAME,
MANAGER_ID,
LOCATION_ID
from dmhr.DEPARTMENT
where rowid = ‘AAAAAAAAAAAAAAAAAB’
image.png

1.3USER\UID
伪列 USER 和 UID 分别用来表示当前用户的用户名和用户标识。
1.3.1查看USER\UID
select
user,
uid,
DEPARTMENT_ID,
DEPARTMENT_NAME,
MANAGER_ID,
LOCATION_ID
from dmhr.DEPARTMENT
image.png

1.4TRXID
伪列 TRXID 用来表示当前记录最后被修改的事务的事务标识
1.4.1查看TRXID
select
trxid,
DEPARTMENT_ID,
DEPARTMENT_NAME,
MANAGER_ID,
LOCATION_ID
from dmhr.DEPARTMENT
image.png
1.4.2修改数据库后查看
update dmhr.DEPARTMENT set DEPARTMENT_NAME=‘总经理办(修改)’ where DEPARTMENT_ID=101;
commit;
image.png
image.png
1.5SESSID
伪列 SESSID 用来表示当前会话的 ID 标识
1.5.1查看SESSID
select
SESSID ,
DEPARTMENT_ID,
DEPARTMENT_NAME,
MANAGER_ID,
LOCATION_ID
from dmhr.DEPARTMENT;
image.png
1.6PHYROWID
伪列 PHYROWID 用来表示当前记录的物理存储信息。
PHYROWID 值由聚集 B 树或二级 B 树中物理记录的文件号、页号、页内槽号组成,能体现聚集 B 树或二级 B 树的存储信息,聚集 B 树记录的最高位为 1。当查询语句中实际使用 CSCN、CSEK、BLKUP 操作符时,PHYROWID 内容是聚集 B 树中记录的物理存储地址;当查询语句中实际仅使用 SSEK、SSCN 操作符时,PHYROWID 内容是二级 B 树中记录的物理存储地址。
select
PHYROWID ,
DEPARTMENT_ID,
DEPARTMENT_NAME,
MANAGER_ID,
LOCATION_ID
from dmhr.DEPARTMENT;
image.png

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论