DBPARTITIONNUM スカラー関数

DBPARTITIONNUM 関数は、行のデータベース・パーティション番号を戻します。 例えば、SELECT 節で使用すると、結果セット内の各行のデータベース・パーティション番号を戻します。

Read syntax diagramSkip visual syntax diagramDBPARTITIONNUM(column-name )

スキーマは SYSIBM です。

column-name
表内の任意の列の修飾された名前または無修飾の名前。 行レベルの情報が戻されるので、どの列が指定されるかに関係なく、結果は同じです。 該当の列は、どのようなデータ・タイプであっても構いません。

列がビューの列である場合、ビューの列の式は、基礎となる基本表の列を参照する必要があり、そのビューは削除可能でなければなりません。 ネストされているか、または共通の表式は、ビューと同じ規則に従います。

DBPARTITIONNUM 関数によってデータベース・パーティション番号が戻される特定の行 (および表) は、 この関数を使用する SQL ステートメントのコンテキストから判別されます。

遷移変数および表に戻されるデータベース・パーティション番号は、分散キー列の現行遷移値から得られます。 例えば、挿入前トリガーにおいて、新しい遷移変数の現行値があれば、関数は予想データベース・パーティション番号を戻します。 ただし、分散キー列の値はそれ以後の挿入前トリガーによって変更される場合があります。 したがって、データベースに挿入される時点での行の最終データベース・パーティション番号は、予測値とは異なるかもしれません。

結果

結果のデータ・タイプは INTEGER であり、NULL 値にはなりません。 db2nodes.cfg ファイルがない場合、結果は 0 になります。

  • DBPARTITIONNUM 関数は、複製された表、チェック制約内、 または生成列の定義で使用することはできません (SQLSTATE 42881)。
  • DBPARTITIONNUM 関数は、ユーザー定義関数の作成時にソース関数として使用することはできません。 この関数は、すべてのデータ・タイプを引数として受け入れるので、 ユーザー定義特殊タイプをサポートするための追加のシグニチャーを作成する必要はありません。
  • CREATE INDEX ステートメントには、DBPARTITIONNUM 関数を式ベース・キーの一部として使用することはできません。
  • 代替構文: 以前のバージョンの Db2® 製品との互換性のために、関数名 NODENUMBER は DBPARTITIONNUM の同義語になっています。

  • 例 1: EMPLOYEE 表の特定の従業員の行が、DEPARTMENT 表の従業員の部門の記述とは異なるデータベース・パーティションにあるインスタンスの数をカウントします。
       SELECT COUNT(*) FROM DEPARTMENT D, EMPLOYEE E
         WHERE D.DEPTNO=E.WORKDEPT
         AND DBPARTITIONNUM(E.LASTNAME) <> DBPARTITIONNUM(D.DEPTNO)
  • 例 2: EMPLOYEE 表と DEPARTMENT 表を結合して、2 つの表の行が同じデータベース・パーティションになるようにします。
       SELECT * FROM DEPARTMENT D, EMPLOYEE E
         WHERE DBPARTITIONNUM(E.LASTNAME) = DBPARTITIONNUM(D.DEPTNO)
  • 例 3: EMPLOYEE 表に対して BEFORE トリガーを使用して、 EMPINSERTLOG1という名前の表にある EMPLOYEE 表の新しい行の従業員番号と予測されるデータベース・パーティション番号を記録します。
       CREATE TRIGGER EMPINSLOGTRIG1
       BEFORE INSERT ON EMPLOYEE
       REFERENCING NEW AW NEWTABLE
       FOR EACH ROW
       INSERT INTO EMPINSERTLOG1
       VALUES(NEWTABLE.EMPNO, DBPARTITIONNUM
       (NEWTABLE.EMPNO))