-20180   COLUMN column-name IN TABLE table-name CANNOT BE ALTERED AS SPECIFIED

説明

列を変更できませんでした。

column-name
列の名前。
table-name
列が含まれる表の名前。

このエラーの原因としては、以下の制限のいずれかに違反していることが考えられます。

  • 以下のいずれかの条件が当てはまる場合は、ALTER TABLE ステートメントで ALTER COLUMN を指定することはできません。
    • 表が DATA CAPTURE CHANGES で定義されている。
    • 列が、(親キーまたは外部キーのいずれかの一部として) 参照整合制約の中で呼び出されている。
    • 列が、拡張索引定義に使用されている。
    • 列にフィールド・プロシージャーが定義されている。
    • 列が、ID 列であるか、または、行変更タイム・スタンプ列である。
    • 列が式ベースの索引で参照される LOB 列であり、変更すれば列のインライン長が短くなる。
    • 表が履歴表、システム期間テンポラル表、アーカイブ表、またはアーカイブ対応表として定義されている。
    • 列が ROW BEGIN、ROW END、または TRANSACTION START ID として定義されている。
    • 列がハッシュ・キー定義に使用されている。
    • マテリアライズ照会表の定義の中で表が直接または間接的に参照されている。
    • 列が、生成式列である。
  • 列が期間定義の一部として定義されている場合、ALTER TABLE ステートメントで SET NOT NULL または SET DATA TYPE 節とともに ALTER COLUMN を指定することはできません。
  • 以下の両方の条件に該当する場合、ALTER TABLE ステートメントで DROP DEFAULT 節または SET DATA TYPE 節とともに ALTER COLUMN を指定することはできません。
    • 表が DATA CAPTURE CHANGES で定義されている。
    • サブシステム・パラメーター RESTRICT_ALT_COL_FOR_DCC が YES に設定されている。
  • 以下のいずれかの条件に該当する場合、ALTER TABLE ステートメントで SET DATA TYPE を指定することはできません。
    • 表がマテリアライズ照会表である。
    • 表に編集プロシージャーまたは有効な手順がある。
    • 列が、拡張索引定義に使用されている。
    • ターゲット・データ・タイプとして VARBINARY が指定されていて、列に次の属性が定義されている。
      • CHAR FOR BIT DATA、VARCHAR FOR BIT DATA、または BINARY
      • 索引の DESC 属性

システムの処置

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

プログラマーの応答

以下のいずれかのアクションを実行します。

  • ステートメント内の列の名前を、変更可能な列に変更します。
  • 表を一度ドロップしてから、必要な属性をもつ表を再作成します。
  • 式を含む索引で列が使用されている場合は、索引をドロップしてから、必要な属性を指定して列を変更します。 その後、索引を再作成します。

SQLSTATE

428FR