スケーラブルデータベースサーバ HiRDB Version 8 解説(Windows(R)用)

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

5.9 検査制約

データベース中の表のデータは,値の範囲や条件など制限を持つ場合が多くあります。例えば,商品の情報をデータベースに格納する場合,商品価格として負の値はあり得ません。そのため,負の値はデータベースに存在してはいけない値であり,挿入又は更新時に値をチェックする必要があります。このように,データ挿入又は更新時に制約条件をチェックし,条件を満たさないデータの場合は操作を抑止することで表データの整合性を保つ機能が検査制約です。また,このマニュアルでは検査制約を定義した表を検査制約表といいます。

なお,ユティリティの実行などで検査制約表のデータの整合性が保証できなくなる場合があります。この場合,検査制約表は検査保留状態になります。検査保留状態については,「5.10 検査保留状態」を参照してください。

検査制約については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。

検査制約の効果
検査制約を定義すると,データの挿入又は更新時のチェックを自動化できるのでUAPを作成するときの負荷を軽減できます。ただし,検査制約表を更新する場合,データの整合性をチェックするため,チェックに掛かる処理時間が増加します。
<この節の構成>
(1) 検査制約の定義
(2) データ操作と整合性

(1) 検査制約の定義

検査制約は,定義系SQLのCREATE TABLECHECKを指定し,表の値の制約条件を探索条件で指定します。また,検査保留状態を使用するには,pd_check_pendingオペランドUSEを指定するか,又はオペランドの指定を省略します。

(2) データ操作と整合性

検査制約表に対する操作系SQLによる更新,追加,又は削除は,HiRDBがSQL実行時にチェックし,整合性を保証します。ただし,次に示すユティリティによる操作をした場合,チェックをしないため,整合性を保証できなくなることがあります。

これらの操作をした場合,データの整合性を確認する必要があります。データの整合性確認手順については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。また,pd_check_pendingオペランドにUSEを指定していて,これらの操作をした場合,検査制約表は検査保留状態になります。