Hitachi

ノンストップデータベース HiRDB Version 9 コマンドリファレンス(Windows(R)用)


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

〈この項の構成〉

(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 RDエリア中の表情報の検査保留状態の変更箇所

実行単位

-cオプションの指定

表の制約

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

参照制約

検査制約

参照制約の状態

検査制約の状態

表単位

該当しません

なし

あり

あり

なし

あり

あり

制約単位

参照制約

あり

なし

あり

あり

検査制約

なし

あり

あり

あり

(凡例)

○:検査保留状態を変更します。

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

(a) 表単位

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

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

  • 表に定義された参照制約及び検査制約のすべての制約について,1回のpdconstckで検査保留状態を変更する場合。

(b) 制約単位

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

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

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

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

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

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

表単位での検査保留状態の強制解除

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

制約単位での検査保留状態の強制解除

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

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

条件

検査保留状態(表及びRDエリア)

-cオプションに指定した制約以外の制約が定義されている場合

検査保留状態の制約があるとき

遷移なし

すべての制約が非検査保留状態のとき

非検査保留状態

-cオプションに指定した制約だけ表に定義されている場合

非検査保留状態