换行表达式

ROW CHANGE 表达式返回一个标记或时间戳,表示对某行的最后一次更改。

换行表达式

阅读语法图跳过可视化语法图ROW CHANGE TIMESTAMPTOKEN FOR表号
TIMESTAMP
指定返回一个时间戳,表示一行数据最后一次被修改的时间。 如果该行未更改,则结果为插入初始值的时间。
TOKEN
指定返回一个BIGINT值的标记,该标记表示一行修改序列中的相对点。 如果该行未更改,则结果为表示初始值插入时间的标记。
FOR 表号
更改开始标识引用表达式的表格。 表名必须是一个公开名称,用于唯一标识一个基本表、视图或子查询的嵌套表表达式。 如果表标识符标识的是视图或嵌套表表达式,则行更改表达式将返回视图或嵌套表表达式的基础表的TIMESTAMP或TOKEN。 视图或嵌套表表达式的外层子选择中只能包含一个基本表。

表格编号不得用于:

更改开始
  • 别名、同义词或具体化的观点
  • 一个具体化的嵌套表表达式
  • 系统周期时间表,如果系统时间敏感绑定选项设置为“是”
  • 如果满足以下条件之一,则启用存档的表格:
    • 对于静态语句,存档敏感选项的有效值为“是”。
    • 为了动态声明,存档敏感选项设置为“是”,GET_ARCHIVE内置全局变量设置为“Y”。
更改结束 更改结束

结果可以为空值。 ROW CHANGE TIMESTAMPROW CHANGE TOKEN 表达方式并非一成不变。

注意

没有行更改时间戳列的表格:
对于没有行更改时间戳列的表格,行更改时间戳表达式返回的时间戳值反映的是对页面而非对行的更改。 该时间戳值表明页面中至少有一行发生了更改,但无法确定是哪一行,甚至无法确定有多少行发生了更改。 ROW CHANGE TIMESTAMP 表达式可能表示某行已更改,但更改可能针对同一页面中的其他行。

在数据共享环境中,返回的时间戳值基于页面的 LRSN 值,反映页面最近一次修改的时间。

在非数据共享环境中,返回的时间戳值基于页面的RBA值。 在非数据共享的环境中,同一页面在半小时内的更改可能无法区分。 例如,在非数据共享环境中发出以下SELECT语句可能会返回相同的值,即使该行在两个SELECT语句之间被更改了:

CREATE TABLE T1 (C1 INTEGER NOT NULL);
INSERT INTO T1 VALUES (1);
SELECT ROW CHANGE TIMESTAMP FOR T1 FROM T1;
UPDATE T1 SET C1 = 2 WHERE C1 = 1;
SELECT ROW CHANGE TIMESTAMP FOR T1 FROM T1;
示例 1:
以下示例返回最近一天内更改过的所有行:
SELECT * FROM ORDERS 
  WHERE ROW CHANGE TIMESTAMP FOR ORDERS > 
    CURRENT TIMESTAMP - 24 HOURS;
示例 2:
以下示例返回的时间戳值对应于 EMP 表中部门 20 员工每行的最新更改:
   SELECT ROW CHANGE TIMESTAMP FOR EMP
     FROM EMP WHERE DEPTNO = 20;
示例 3:
以下示例返回一个BIGINT值,该值对应于EMP修改序列中员工编号为“3500”的相对点:
   SELECT ROW CHANGE TOKEN FOR EMP
     FROM EMP WHERE EMPNO = '3500';