RID および RID_BIT スカラー関数

RID および RID_BIT 関数は、行を一意的に識別するために使用されます。 それぞれ、行の行 ID (RID) を返します。 RID_BIT 関数の結果には、RID 関数の結果とは異なり、それを不注意により間違った表で使用することを防止する表情報が含まれています。 どちらも非決定的関数です。

Read syntax diagramSkip visual syntax diagramRIDRID_BIT(table-designator )

スキーマは SYSIBM です。 関数名を修飾名で指定することはできません。

RID
RID 関数を実行することを指定します。 RID 関数は、パーティション・データベース環境では使用できません。
RID_BIT
RID_BIT 関数を実行することを指定します。
表指定子
基本表、ビュー、またはネストされた表の式を一意的に識別します (SQLSTATE 42703)。 表指定子がビューまたはネストされた表の式を指定する場合、RID_BIT および RID 関数はビューまたはネストされた表の式の基本表の RID を戻します。 指定されたビューまたはネストされた表の式は、 外部副選択に基本表を 1 つだけ含んでいる必要があります (SQLSTATE 42703)。 表指定子は削除可能でなければなりません (SQLSTATE 42703)。 削除可能なビューについては、 CREATE VIEWの「 」セクションを参照してください。

表指定子を指定しない場合、FROM 節には、表指定子に派生できるエレメントが 1 つだけ含まれている必要があります (SQL STATE 42703)。

結果

結果のデータ・タイプは、BIGINT (RID の場合) または VARCHAR (16) FOR BIT DATA (RID_BIT の場合) です。 結果は NULL 値の場合もあります。

RID または RID_BIT 関数は、単一行に対して複数回呼び出すと異なる値を返すことがあります。 例えば、指定された表に対して REORG ユーティリティーを実行する前と後に RID または RID_BIT を実行すると、毎回異なる値が関数によって返される可能性があります。

  • アプリケーション内にオプティミスティック・ロックをインプリメントするには、 ROW CHANGE TOKEN 式によって戻される値を RID_BIT スカラー関数の引数として使用します。
  • RID スカラー関数は、 カラム・オーガナイズでは使用できません。
  • 代替構文: 以下に示す代替構文は、標準的な構文ではありません。 これらは、旧バージョンの製品や他のデータベース製品との互換性を保持するためにサポートされています。
    • 疑似列 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があるとします。
       CREATE TABLE EMP1 (
         EMPNO   CHAR(6),
         NAME    CHAR(30),
         SALARY  DECIMAL(9,2),
         PICTURE BLOB(250K),
         RESUME  CLOB(32K)
       )
    従業員番号 3500 に対応する行について、 ホスト変数 HV_EMP_RID を RID_BIT 組み込みスカラー関数の値に設定し、 HV_EMP_RCT を ROW CHANGE TOKEN 式の値に設定します。
       SELECT RID_BIT(EMP1), ROW CHANGE TOKEN FOR EMP1
         INTO :HV_EMP_RID, :HV_EMP_RCT FROM EMP1
         WHERE EMPNO = '3500'
    その RID 値を使用して従業員およびユーザー定義関数 UPDATE_RESUME を識別して、従業員の給与を $1000 ずつ増加させてから従業員の履歴書を更新します。
       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