スケーラブルデータベースサーバ HiRDB Version 8 コマンドリファレンス(UNIX(R)用)
検査保留状態に関する指定をします。
検査制約又は参照制約を定義した表の再編成では,UOCを使用して被参照表中の参照表が参照している行を削除した場合を除いて,制約の整合性が保証できるため,検査保留状態は変更しません。UOCを使用して被参照表を再編成する場合だけ検査保留状態を設定します。
また,リロードでは,古いアンロードデータファイルを使用してリロードしたり,別表へのリロードをしたりする場合,制約の整合性が保証できなくなる可能性があります。そのため,該当する表や,その表に関係する参照表を検査保留状態に設定します。
なお,ユーザ自身が制御文を指定して,検査保留状態を変更(設定)しないこともできます。検査保留状態については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。
constraint 〔pending=no〕 〔ref_pending=no〕 |
参照表又は検査制約を定義した表に対して,再編成又はリロードをする場合,その表の検査保留状態を変更(設定)しないときに指定します。このオペランドを省略した場合の仮定値は,「(4)検査保留状態の設定範囲」を参照してください。
被参照表に対して再編成又はリロードをする場合,その表に関係する参照表の検査保留状態を変更(設定)しないときに指定します。このオペランドを省略した場合の仮定値は,「(4)検査保留状態の設定範囲」を参照してください。
pdrorg実行条件と検査保留状態の設定有無の関係を次の表に示します。
表8-22 pdrorg実行条件と検査保留状態の設定有無
実行条件 | 検査保留状態設定有無 | ||||||
---|---|---|---|---|---|---|---|
システム定義のpd_check_pendingオペランドの値 | 実行機能 | constraint文のオペランド指定 | UOC使用 | 対象表 | |||
被参照表 | 参照表 | 検査制約が定義された表 | |||||
USE | 再編成 | pending=no | あり | あり | × | × | × |
なし | × | × | × | ||||
なし | あり | × | × | × | |||
なし | × | × | × | ||||
ref_pending=no | あり | あり | × | × | × | ||
なし | × | × | × | ||||
なし | あり | ○ | × | × | |||
なし | × | × | × | ||||
リロード | pending=no | あり | − | × | × | × | |
なし | − | × | ○ | ○ | |||
ref_pending=no | あり | − | × | × | × | ||
なし | − | ○ | × | × | |||
上記以外 | − | − | − | × | × | × | |
USE以外 | − | − | − | − | × | × | × |
再編成又はリロード実行時の,検査制約の検査保留状態の設定範囲を表8-23に示します。また,参照制約の検査保留状態の設定範囲を表8-24に示します。
表8-23 検査制約の検査保留状態の設定範囲
実行単位 | 検査制約の検査保留状態の設定範囲 | ||
---|---|---|---|
ディクショナリ表 | RDエリア中の表情報 | ||
SQL_TABLES表CHECK_PEND2列 | SQL_CHECKS表CHECK_PEND2列 | 検査制約の状態 | |
表 | 設定 | 設定 | ◎※ |
RDエリア | 設定 | 設定 | ○※ |
サーバ | 設定 | 設定 | ●※ |
表8-24 参照制約の検査保留状態の設定範囲
実行単位 | 対象表 | |||||
---|---|---|---|---|---|---|
被参照表 | 参照表 | |||||
被参照表に関連する参照表の検査保留状態 | 参照表の検査保留状態 | |||||
ディクショナリ表 | RDエリア中の表情報 | ディクショナリ表 | RDエリア中の表情報 | |||
SQL_TABLES表CHECK_PEND列 | SQL_REFERENTIAL_CONSTRAINTS表CHECK_PEND列 | 参照制約の状態 | SQL_TABLES表CHECK_PEND列 | SQL_REFERENTIAL_CONSTRAINTS表CHECK_PEND列 | 参照制約の状態 | |
表 | 設定 | 設定 | ◎※ | 設定 | 設定 | ◎※ |
RDエリア | 設定 | 設定 | ◎※ | 設定 | 設定 | ○※ |
スキーマ | 設定 | 設定 | ◎※ | 設定 | 設定 | ◎※ |
サーバ | 設定 | 設定 | ◎※ | 設定 | 設定 | ●※ |
次に示す表T1〜T5について,constraint文のpending及びref_pendingオペランドを指定した場合の,表の検査保留状態の設定可否について説明します。
表T1〜T5に対してリロードを実行したときの表の検査保留状態を次の表に示します。
表8-25 リロードを実行したときの表の状態
リロード対象表と制約定義有無 | constraint文のオペランドの指定有無 | 表の検査保留状態 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
表名 | 参照制約 | 検査制約 | pending | ref_pending | T1 | T2 | T3 | T4 | T5 | |
被参照表 | 参照表 | |||||||||
T1 | ○ | × | × | なし | なし | − | P | − | − | − |
あり | − | N | − | − | − | |||||
あり | なし | − | P | − | − | − | ||||
あり | − | N | − | − | − | |||||
T2 | ○ | ○ | × | なし | なし | − | P | P | − | − |
あり | − | P | N | − | − | |||||
あり | なし | − | N | P | − | − | ||||
あり | − | N | N | − | − | |||||
T3 | × | ○ | × | なし | なし | − | − | P | − | − |
あり | − | − | P | − | − | |||||
あり | なし | − | − | N | − | − | ||||
あり | − | − | N | − | − | |||||
T4 | × | × | ○ | なし | なし | − | − | − | P | − |
あり | − | − | − | P | − | |||||
あり | なし | − | − | − | N | − | ||||
あり | − | − | − | N | − | |||||
T5 | × | × | × | なし | なし | − | − | − | − | − |
あり | − | − | − | − | − | |||||
あり | なし | − | − | − | − | − | ||||
あり | − | − | − | − | − |
再編成又はリロードの対象となる表や,該当する表に関係する参照表には,再編成又はリロード処理を実行する前に,検査保留状態を設定します。なお,表の検査保留状態を設定した後,エラーの発生などによってpdrorgがロールバックした場合でも,表の検査保留状態の設定は完了(コミットが完了)しているため,表は検査保留状態となります。
スキーマ単位の場合は,再編成又はリロード処理を実行する前に,対象となるすべての表を一つずつ検査保留状態に設定します。そのため,表の検査保留状態の設定処理がエラーとなった場合,pdrorgはエラー終了するため,エラーになった表以前に処理した表は検査保留状態になりますが,エラーになった表より後の表は検査保留状態に変更されません。
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.