Hitachi

ノンストップデータベース HiRDB Version 10 システム導入・設計ガイド(UNIX(R)用)


11.20.2 検査制約の定義

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

〈この項の構成〉

(1) 検査制約を定義する表の制限事項

検査制約を定義する表の表定義,及び表定義変更時の制限事項を次に示します。

(a) 表定義(CREATE TABLE)時

  • 検査制約は改竄防止表には定義できません。

  • 検査制約は一つの表に254個まで定義できます。255個以上は定義できません。例を次に示します。

    [図データ]

    この場合,検査制約数が254個より多いため,定義できません。表定義時にエラーとなります。

  • 検査制約,及び各検査制約の探索条件中のAND,ORの個数の和は一つの表に254個まで定義できます(ただし,CASE式中の探索条件,及びその探索条件中のAND,ORの個数は除きます)。例を次に示します。

    [図データ]

    この場合,検査制約数は2個ですが,制約名CHECK_T1_C1の探索条件中のANDの数が200,制約名CHECK_T1_C2の探索条件中のANDの数53で,検査制約数と各検査制約の探索条件中のAND,ORの和が255(2+200+53)となり,254個より多いため定義できません。表定義時にエラーとなります。

    なお,表に定義されている検査制約数と各検査制約の探索条件中のAND,ORの和はディクショナリ表のSQL_TABLE表の,N_CHECK_LIMIT列に格納されています。

(b) 表定義変更(ALTER TABLE)時

  • 検査制約表に対して,DROP句及びRENAME句を使用した表定義変更はできません。

  • 検査制約表に対して,CHANGE句を使用した次の変更はできません。

    • データ型やデータ長の変更

    • SPLITの変更

    • 既定値の設定,解除

    • WITH DEFAULTの設定

  • 検査制約表に対して,RENAME句を使用した列名変更はできません。

(2) 検査制約を定義する場合の注意事項