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

1.2.2通过ROWID来过滤数据
select
rowid,
DEPARTMENT_ID,
DEPARTMENT_NAME,
MANAGER_ID,
LOCATION_ID
from dmhr.DEPARTMENT
where rowid = ‘AAAAAAAAAAAAAAAAAB’

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

1.4TRXID
伪列 TRXID 用来表示当前记录最后被修改的事务的事务标识
1.4.1查看TRXID
select
trxid,
DEPARTMENT_ID,
DEPARTMENT_NAME,
MANAGER_ID,
LOCATION_ID
from dmhr.DEPARTMENT

1.4.2修改数据库后查看
update dmhr.DEPARTMENT set DEPARTMENT_NAME=‘总经理办(修改)’ where DEPARTMENT_ID=101;
commit;


1.5SESSID
伪列 SESSID 用来表示当前会话的 ID 标识
1.5.1查看SESSID
select
SESSID ,
DEPARTMENT_ID,
DEPARTMENT_NAME,
MANAGER_ID,
LOCATION_ID
from dmhr.DEPARTMENT;

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;





