-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