RID 和 RID_BIT 标量函数
RID 和 RID_BIT 函数用于唯一地标识行。 每个返回行的行标识 (RID)。 与 RID 函数的结果不同, RID_BIT 函数的结果包含表信息,以帮助您避免不慎将其与错误的表一起使用。 这两个函数都是非确定性的。
该模式是 SYSIBM。 不能将函数名指定为限定名。
- RID
- 指示要运行 RID 函数。 RID 功能可在分区数据库环境中使用。 RID 功能提供的值不包括数据库分区信息。 在分区数据库环境中,使用 "DBPARTITIONNUM使值唯一。 RID_BIT
- 指示要运行 RID_BIT 函数。 表标志符
- 唯一地标识基本表,视图或嵌套表表达式 (SQLSTATE 42703)。 如果表标志符指定视图或嵌套表表达式,那么 RID_BIT 和 RID 函数将返回视图或嵌套表表达式的基本表的 RID。 指定的视图或嵌套表表达式必须在其外部子查询中仅包含一个基本表 (SQLSTATE 42703)。 表标志符必须是可删除的 (SQLSTATE 42703)。 有关可删除视图的信息,请参阅
CREATE VIEW
的Notes
部分。如果未指定表标志符,那么 FROM 子句必须仅包含一个可派生为表标志符的元素 (SQL STATE 42703)。
结果
结果的数据类型为 BIGINT (对于 RID) 或 VARCHAR (16) FOR BIT DATA (对于 RID_BIT)。 结果可以为空值。
当针对单行多次调用时, RID 或 RID_BIT 函数可能会返回不同的值。 例如,如果在针对指定表运行 reorg 实用程序之前和之后都运行 RID 或 RID_BIT ,那么该函数每次都可能返回不同的值。
注意
- 要在应用程序中实现乐观锁定,请使用 ROW CHANGE TOKEN 表达式返回的值作为 RID_BIT 标量函数的自变量。
- 语法替代方法: 以下替代方法是非标准的。 支持这些语法,以便与早期产品版本或其他数据库产品兼容。
- 伪列
ROWID
可用于引用 RID。 不合格的 ROWID 引用等同于 RID_BIT () 和合格的 ROWID ,例如 EMPLOYEE.ROWID 等同于 RID_BIT (EMPLOYEE)。
- 伪列
示例
- 示例 1: 从 EMPLOYEE 表返回部门 20 中员工的 RID 和姓氏。
SELECT RID_BIT (EMPLOYEE), ROW CHANGE TOKEN FOR EMPLOYEE, LASTNAME FROM EMPLOYEE WHERE DEPTNO = '20' - 示例 2: 给定表 EMP1,定义如下:
将主变量 HV_EMP_RID 设置为 RID_BIT 内置标量函数的值,将 HV_EMP_RCT 设置为对应于员工编号 3500 的行的 ROW CHANGE TOKEN 表达式的值。CREATE TABLE EMP1 ( EMPNO CHAR(6), NAME CHAR(30), SALARY DECIMAL(9,2), PICTURE BLOB(250K), RESUME CLOB(32K) )
使用该 RID 值来识别员工以及用户定义的函数 UPDATE_RESUME ,将员工的工资增加 1000 美元并更新员工的简历。SELECT RID_BIT(EMP1), ROW CHANGE TOKEN FOR EMP1 INTO :HV_EMP_RID, :HV_EMP_RCT FROM EMP1 WHERE EMPNO = '3500'UPDATE EMP1 SET SALARY = SALARY + 1000, RESUME = UPDATE_RESUME(:HV_RESUME) WHERE RID_BIT(EMP1) = :HV_EMP_RID AND ROW CHANGE TOKEN FOR EMP1 = :HV_EMP_RCT
