ROW CHANGE 表达式

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

row-change-expression
Read syntax diagramSkip visual syntax diagramROW CHANGETOKENTIMESTAMPFORtable-designator
TOKEN
指定将返回表示行的修改序列中的相对点的 BIGINT 值。 如果未更改该行,那么结果是表示插入初始值的时间的标记。 结果可以为空值。 ROW CHANGE TOKEN 不是确定性的。
TIMESTAMP
指定将返回表示上次更改行的时间的 TIMESTAMP 值。 如果未更改行,那么结果是插入初始值的时间。 结果可以为空值。 ROW CHANGE TIMESTAMP 不是确定性的。
FOR 表标志符
标识在其中引用表达式的表。 table-designator 必须唯一地标识基本表,视图或嵌套表表达式 (SQLSTATE 42867)。 如果 table-designator 标识视图或嵌套表表达式,那么 ROW CHANGE 表达式将返回视图或嵌套表表达式的基本表的 TOKEN 或 TIMESTAMP。 视图或嵌套表表达式必须在其外部子查询中仅包含一个基本表 (SQLSTATE 42867)。 如果 table-designator 是视图或嵌套表表达式,那么它必须是可删除的 (SQLSTATE 42703)。 有关可删除视图的信息,请参阅 CREATE VIEWNotes 部分。 ROW CHANGE TIMESTAMP 表达式的表标志符必须解析为包含行更改时间戳记列 (SQLSTATE 55068)的基本表。

注意

  • ROW CHANGE TOKEN 和 ROW CHANGE TIMESTAMP 不是 按列组织的 表的有效表达式 (SQLSTATE 42703)。

示例

  • 返回对应于部门 20 中员工的 EMPLOYEE 表中每行的最新更改的时间戳记值。 假定 EMPLOYEE 表已更改为包含使用 ROW CHANGE TIMESTAMP 子句定义的列。
       SELECT ROW CHANGE TIMESTAMP FOR EMPLOYEE
         FROM EMPLOYEE WHERE DEPTNO = 20
  • 返回 BIGINT 值,该值表示对应于员工编号 3500 的行的修改序列中的相对点。 还将返回要在乐观锁定 DELETE 方案中使用的 RID_BIT 标量函数值。 指定 WITH UR 选项以获取最新的 ROW CHANGE TOKEN 值。
       SELECT ROW CHANGE TOKEN FOR EMPLOYEE, RID_BIT (EMPLOYEE)
         FROM EMPLOYEE WHERE EMPNO = '3500' WITH UR
    上述语句成功,无论 EMPLOYEE 表中是否存在行更改时间戳记列。 以下搜索型 DELETE 语句从前面的 SELECT 语句中删除 ROW CHANGE TOKEN 和 RID_BIT 值 指定的行,假定这两个参数标记值设置为从前面的语句中获取的值。
       DELETE FROM EMPLOYEE E
         WHERE RID_BIT (E) = ? AND ROW CHANGE TOKEN FOR E = ?