DBPARTITIONNUM スカラー関数
DBPARTITIONNUM 関数は、行のデータベース・パーティション番号を戻します。 例えば、SELECT 節で使用すると、結果セット内の各行のデータベース・パーティション番号を戻します。
スキーマは 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))