スケーラブルデータベースサーバ HiRDB Version 8 コマンドリファレンス(Windows(R)用)

[目次][索引][前へ][次へ]

13.2.2 検査保留状態の強制変更機能

<この項の構成>
(1) 機能概要
(2) 検査保留状態の強制変更機能の実行単位
(3) 検査保留状態の強制設定
(4) 検査保留状態の強制解除

(1) 機能概要

検査保留状態の強制変更機能は,参照制約又は検査制約の整合性を検査しないで,検査保留状態を強制的に変更する機能です。検査保留状態の強制変更機能には,検査保留状態の強制設定,又は強制解除の二つがあります。

検査保留状態の強制設定
検査保留状態の強制設定は,表の検査保留状態を強制的に検査保留状態に設定する機能です。この機能を使用する場合は,-k setを指定します。
検査保留状態の強制設定は,次の場合に適用します。
  • システム定義のpd_check_pendingオペランドの指定値をNOUSEからUSEに変更した場合,参照制約又は検査制約の制約の整合性が不明確なとき。
  • システム定義のpd_check_pendingオペランドを指定していないシステムで,バージョン07-03以降のHiRDBにバージョンアップした場合に,参照制約又は検査制約の整合性が不明確なとき。
  • 一時的に,ユーザが表を操作できないように規制する場合。
  • 整合性チェックの結果,制約違反があった場合に,検査保留状態の強制解除で検査保留状態を解除して,SQLで制約違反となったデータを修正した後,再度整合性チェックをするとき。

検査保留状態の強制解除
検査保留状態の強制解除は,表の検査保留状態を強制的に非検査保留状態に設定する(検査保留状態を解除する)機能です。この機能を使用する場合は,-k releaseを指定します。
検査保留状態の強制解除は,次の場合に適用します。
  • ユーザ側で制約の整合性を確認できていて,整合性チェックが不要な場合など,強制的に検査保留状態を解除し運用する場合。
  • 参照制約で違反した行を,SQLで参照表の外部キーの更新又は削除によって修正する場合。
  • 検査制約で違反した行をSQLで修正する場合。

(2) 検査保留状態の強制変更機能の実行単位

検査保留状態の強制変更は,表に定義された参照制約及び検査制約のすべての制約を更新対象とする「表単位」,又は一つの制約だけを更新対象とする「制約単位」に実行できます。

検査保留状態の強制変更を実行すると,ディクショナリ表の検査保留状態の情報が変更されます。ディクショナリ表の検査保留状態の変更箇所を次の表に示します。

表13-16 ディクショナリ表の検査保留状態の変更箇所

実行単位 -cオプションの指定 表の制約 ディクショナリ表の検査保留状態の変更箇所
参照制約 検査制約 SQL_TABLES表 SQL_REFERENTIAL_CONSTRAINTS表 SQL_CHEKS表
CHECK_PEND列 CHECK_PEND2列 CHECK_PEND列 CHECK_PEND2列
表単位 該当しません なし あり 1
あり なし 1
あり あり 1 1
制約単位 参照制約 あり なし 2
あり あり 2
検査制約 なし あり 2
あり あり 2

(凡例)
○:検査保留状態を変更します。
−:検査保留状態を変更しません(現在の状態を維持します)。

注※1 
表に定義されたすべての参照制約又は検査制約の検査保留状態を変更します。

注※2 
-cオプションに指定した制約だけ検査保留状態を変更します。

RDエリア中の表情報の検査保留状態の変更箇所を表13-17に示します。

表13-17 RDエリア中の表情報の検査保留状態の変更箇所

実行単位 -cオプションの指定 表の制約 RDエリア中の表情報の検査保留状態の変更箇所
参照制約 検査制約 参照制約の状態 検査制約の状態
表単位 該当しません なし あり
あり なし
あり あり
制約単位 参照制約 あり なし
あり あり
検査制約 なし あり
あり あり

(凡例)
○:検査保留状態を変更します。
−:検査保留状態を変更しません(現在の状態を維持します)。

(a) 表単位

表単位の場合,定義された参照制約又は検査制約のすべてを変更対象とします。表単位で実行する場合は,-tオプションを指定します。

表単位は次の場合に適用します。

(b) 制約単位

表に定義された参照制約又は検査制約のうち,一つの制約だけ変更対象とします。制約単位に実行する場合,-cオプションを指定します。

制約単位は,個々の制約について検査保留状態を変更する場合に適用します。

(3) 検査保留状態の強制設定

表の検査保留状態,制約の検査保留状態,及びRDエリアの検査保留状態を検査保留状態に設定します。

(4) 検査保留状態の強制解除

表の検査保留状態,制約の検査保留状態,及びRDエリアの検査保留状態を非検査保留状態に設定します。なお,pdconstckの実行単位,表の検査保留状態,制約の検査保留状態,及びRDエリアの検査保留状態によって,設定内容(解除可否)が変わります。実行単位ごとの説明を次に示します。

表単位での検査保留状態の強制解除
表単位の場合,無条件に表の検査保留状態,制約の検査保留状態,及びRDエリアの検査保留状態を非検査保留状態に設定します。

制約単位での検査保留状態の強制解除
制約単位の場合,-cオプションで指定した制約の検査保留状態を非検査保留状態に設定します。また,ほかの制約の検査保留状態によって,表及びRDエリアの検査保留状態は変わらないこともあります。検査保留状態の遷移を次の表に示します。

表13-18 制約単位での検査保留状態の遷移(検査保留状態の強制解除)

条件 検査保留状態(表及びRDエリア)
-cオプションに指定した制約以外の制約が定義されている場合 検査保留状態の制約があるとき 遷移なし
すべての制約が非検査保留状態のとき 非検査保留状態
-cオプションに指定した制約だけ表に定義されている場合 非検査保留状態