-546   THE CHECK CONSTRAINT constraint-name IS INVALID

説明

CREATE TABLE または ALTER TABLE ステートメントのチェック制約は、 以下のうち 1 つ以上の理由で無効です。
  • 制約定義が、フィールド・プロシージャーをもつ列を参照している。
  • 制約定義が、他のオペランドのデータ・タイプよりも 下位の階層の数値データ・タイプの列を参照している。 階層は以下のとおり。
    small integer < large integer < decimal  
    < single precision float 
    < double precision float
  • 制約定義が、他の列オペランドと同じではない数値データ・タイプをもつ列を参照する。
  • 列および他のオペランドが文字ストリング・データ・タイプではない場合、 制約定義が、他のオペランドよりも長さが短い列を参照している。
  • 制約定義は、DECFLOAT 列を参照している。
  • 制約定義が、EBCDIC 表の Db2® 11 Unicode 列を参照している。
  • 制約定義が、組み込み関数またはユーザー定義関数を参照している。
  • 制約定義が、データの変換を必要とする cast 関数を使用する。 チェック制約に許可された唯一の関数は、データの変換を必要としない cast 関数です。
  • 制約定義にグローバル変数が含まれている。
  • 制約に、XML 列が含まれる。
  • 制約定義に、XMLQuery 式が含まれる。
constraint-name
チェック制約の名前。

システムの処置

このステートメントを処理することはできません。

ALTER TABLE の場合、チェック制約はオブジェクト表に追加されません。 表の定義は変更されません。

CREATE TABLE の場合、表は作成されません。

プログラマーの応答

チェック制約定義を訂正し、ステートメントを再び実行してください。

SQLSTATE

42621