13.2.2 検査保留状態の強制変更機能
(1) 機能概要
検査保留状態の強制変更機能は,参照制約又は検査制約の整合性を検査しないで,検査保留状態を強制的に変更する機能です。検査保留状態の強制変更機能には,検査保留状態の強制設定,又は強制解除の二つがあります。
- 検査保留状態の強制設定
-
検査保留状態の強制設定は,表の検査保留状態を強制的に検査保留状態に設定する機能です。この機能を使用する場合は,-k setを指定します。
検査保留状態の強制設定は,次の場合に適用します。
-
システム定義のpd_check_pendingオペランドの指定値をNOUSEからUSEに変更した場合,参照制約又は検査制約の制約の整合性が不明確なとき。
-
システム定義のpd_check_pendingオペランドを指定していないシステムで,バージョン07-03以降のHiRDBにバージョンアップした場合に,参照制約又は検査制約の整合性が不明確なとき。
-
一時的に,ユーザが表を操作できないように規制する場合。
-
整合性チェックの結果,制約違反があった場合に,検査保留状態の強制解除で検査保留状態を解除して,SQLで制約違反となったデータを修正した後,再度整合性チェックをするとき。
-
- 検査保留状態の強制解除
-
検査保留状態の強制解除は,表の検査保留状態を強制的に非検査保留状態に設定する(検査保留状態を解除する)機能です。この機能を使用する場合は,-k releaseを指定します。
検査保留状態の強制解除は,次の場合に適用します。
-
ユーザ側で制約の整合性を確認できていて,整合性チェックが不要な場合など,強制的に検査保留状態を解除し運用する場合。
-
参照制約で違反した行を,SQLで参照表の外部キーの更新又は削除によって修正する場合。
-
検査制約で違反した行をSQLで修正する場合。
-
(2) 検査保留状態の強制変更機能の実行単位
検査保留状態の強制変更は,表に定義された参照制約及び検査制約のすべての制約を更新対象とする「表単位」,又は一つの制約だけを更新対象とする「制約単位」に実行できます。
検査保留状態の強制変更を実行すると,ディクショナリ表の検査保留状態の情報が変更されます。ディクショナリ表の検査保留状態の変更箇所を次の表に示します。
実行単位 |
-cオプションの指定 |
表の制約 |
ディクショナリ表の検査保留状態の変更箇所 |
||||
---|---|---|---|---|---|---|---|
参照制約 |
検査制約 |
SQL_TABLES表 |
SQL_REFERENTIAL_CONSTRAINTS表 |
SQL_CHEKS表 |
|||
CHECK_PEND列 |
CHECK_PEND2列 |
CHECK_PEND列 |
CHECK_PEND2列 |
||||
表単位 |
該当しません |
なし |
あり |
− |
○ |
− |
○※1 |
あり |
なし |
○ |
− |
○※1 |
− |
||
あり |
あり |
○ |
○ |
○※1 |
○※1 |
||
制約単位 |
参照制約 |
あり |
なし |
○ |
− |
○※2 |
− |
あり |
あり |
○ |
− |
○※2 |
− |
||
検査制約 |
なし |
あり |
− |
○ |
− |
○※2 |
|
あり |
あり |
− |
○ |
− |
○※2 |
RDエリア中の表情報の検査保留状態の変更箇所を次の表に示します。
実行単位 |
-cオプションの指定 |
表の制約 |
RDエリア中の表情報の検査保留状態の変更箇所 |
||
---|---|---|---|---|---|
参照制約 |
検査制約 |
参照制約の状態 |
検査制約の状態 |
||
表単位 |
該当しません |
なし |
あり |
− |
○ |
あり |
なし |
○ |
− |
||
あり |
あり |
○ |
○ |
||
制約単位 |
参照制約 |
あり |
なし |
○ |
− |
あり |
あり |
○ |
− |
||
検査制約 |
なし |
あり |
− |
○ |
|
あり |
あり |
− |
○ |
(4) 検査保留状態の強制解除
表の検査保留状態,制約の検査保留状態,及びRDエリアの検査保留状態を非検査保留状態に設定します。なお,pdconstckの実行単位,表の検査保留状態,制約の検査保留状態,及びRDエリアの検査保留状態によって,設定内容(解除可否)が変わります。実行単位ごとの説明を次に示します。
- 表単位での検査保留状態の強制解除
-
表単位の場合,無条件に表の検査保留状態,制約の検査保留状態,及びRDエリアの検査保留状態を非検査保留状態に設定します。
- 制約単位での検査保留状態の強制解除
-
制約単位の場合,-cオプションで指定した制約の検査保留状態を非検査保留状態に設定します。また,ほかの制約の検査保留状態によって,表及びRDエリアの検査保留状態は変わらないこともあります。検査保留状態の遷移を次の表に示します。
表13‒18 制約単位での検査保留状態の遷移(検査保留状態の強制解除) 条件
検査保留状態(表及びRDエリア)
-cオプションに指定した制約以外の制約が定義されている場合
検査保留状態の制約があるとき
遷移なし
すべての制約が非検査保留状態のとき
非検査保留状態
-cオプションに指定した制約だけ表に定義されている場合
非検査保留状態