DB2 Version 9.7 for Linux, UNIX, and Windows

ALTER TABLE ステートメント

ALTER TABLE ステートメントは、表の定義を変更します。

呼び出し

このステートメントは、アプリケーション・プログラムに組み込んだり、動的 SQL ステートメントを使用して発行したりすることができます。 これは、DYNAMICRULES の実行動作がパッケージに効力を持つ場合にのみ、動的に準備できる実行可能ステートメントです (SQLSTATE 42509)。

許可

ステートメントの許可 ID によって保持されている特権には、少なくとも以下のいずれかが含まれていなければなりません。
  • 変更する表に対する ALTER 特権
  • 変更する表に対する CONTROL 特権
  • 表のスキーマに対する ALTERIN 特権
  • DBADM 権限
外部キーを作成またはドロップするには、このステートメントの許可 ID に、親表に対する以下のいずれかの特権が含まれている必要があります。
  • 表に対する REFERENCES 特権
  • 指定された親キーのそれぞれの列に対する REFERENCES 特権
  • 表に対する CONTROL 特権
  • DBADM 権限
表 T の主キーまたはユニーク制約をドロップするには、この表 T の親キーに従属しているすべての表において、ステートメントの許可 ID に以下の特権が少なくとも 1 つ含まれている必要があります。
  • 表に対する ALTER 特権
  • 表に対する CONTROL 特権
  • 表のスキーマに対する ALTERIN 特権
  • DBADM 権限
(全選択を使用して) 表をマテリアライズ照会表に変更するには、 このステートメントの許可 ID によって保持されている特権に、以下のうち少なくとも 1 つが含まれている必要があります。
  • 表に対する CONTROL 特権
  • DBADM 権限
さらに、全選択で識別された個々の表またはビューに対する 以下の特権 (グループ特権を除く) が少なくとも 1 つ含まれている必要があります。
  • 表またはビューに対する SELECT 特権および ALTER 特権 (グループ特権を含む)
  • 表またはビューに対する CONTROL 特権
  • 表またはビューに対する SELECT 特権と、 表またはビューのスキーマに対する ALTERIN 特権 (グループ特権を含む)
  • DATAACCESS 権限
表を変更してマテリアライズ照会表でなくなるようにするには、 ステートメントの許可 ID が持っている特権に、 このマテリアライズ照会表を定義するのに使用する全選択で識別される各表またはビューに対して、 少なくとも以下の 1 つが含まれている必要があります。
  • 表またはビューに対する ALTER 特権
  • 表またはビューに対する CONTROL 特権
  • 表またはビューのスキーマに対する ALTERIN 特権
  • DBADM 権限

タイプ DB2SECURITYLABEL の列を表に追加するには、ステートメントの許可 ID の保持する特権に、少なくとも、表に関連するセキュリティー・ポリシーからのセキュリティー・ラベルが含まれている必要があります。

表からセキュリティー・ポリシーを削除するには、ステートメントの許可 ID の保持する特権に、SECADM 権限が含まれている必要があります。

データ・パーティションにアタッチするよう表を変更するには、ステートメントの許可 ID の保持する特権に、ソース表に対して少なくとも以下のうちの 1 つが含まれている必要があります。
  • 表に対する SELECT 特権と、表のスキーマに対する DROPIN 特権
  • 表に対する CONTROL 特権
  • DATAACCESS 権限
また、ターゲット表に対しては、以下のうち少なくとも 1 つが含まれている必要があります。
  • 表に対する ALTER および INSERT 特権
  • 表に対する CONTROL 特権
  • DATAACCESS 権限
データ・パーティションをデタッチするよう表を変更するには、ステートメントの許可 ID の保持する特権に、デタッチされたパーティションのターゲット表に対して少なくとも以下のうちの 1 つが含まれている必要があります。
  • データベースに対する CREATETAB 権限、および表の使用する表スペースに対する USE 特権に加えて、以下のいずれかが必要です。
    • データベースに対する IMPLICIT_SCHEMA 権限 (新規表の暗黙的または明示的スキーマ名が存在しない場合)
    • スキーマに対する CREATEIN 特権 (新規表のスキーマ名が既存のスキーマを指している場合)
  • DBADM 権限
また、ソース表に対しては、以下のうち少なくとも 1 つが含まれている必要があります。
  • 表に対する SELECT、ALTER、および DELETE 特権
  • 表に対する CONTROL 特権
  • DATAACCESS 権限
表を NOT LOGGED INITIALLY WITH EMPTY TABLE をアクティブ化するように変更する場合は、ステートメントの許可 ID に、以下の特権が少なくとも 1 つ含まれている必要があります。
  • 表に対する ALTER および DELETE 特権
  • 表に対する CONTROL 特権
  • DBADM 権限
セキュリティー・ポリシーで保護されている表を NOT LOGGED INITIALLY WITH EMPTY TABLE をアクティブ化するように変更する場合は、ステートメントの許可 ID に、以下の特権が少なくとも 1 つ含まれている必要があります。
  • 表に対する CONTROL 特権
  • DBADM authority

構文

構文図を読む構文図をスキップする
>>-ALTER TABLE--table-name-------------------------------------->

         .-------------------------------------------------------------------------.         
         V          .-COLUMN-.                                                     |         
>--+-------+-ADD--+-+--------+--| column-definition |-+--------------------------+-+-----+-><
   |       |      +-| unique-constraint |-------------+                          |       |   
   |       |      +-| referential-constraint |--------+                          |       |   
   |       |      +-| check-constraint |--------------+                          |       |   
   |       |      +-| distribution-clause |-----------+                          |       |   
   |       |      '-RESTRICT ON DROP------------------'                          |       |   
   |       |        .-MATERIALIZED-.                                             |       |   
   |       |      .-+--------------+--QUERY-.                                    |       |   
   |       +-ADD--+-------------------------+--| materialized-query-definition |-+       |   
   |       +-ALTER--+-FOREIGN KEY-+--constraint-name--| constraint-alteration |--+       |   
   |       |        '-CHECK-------'                                              |       |   
   |       |        .-COLUMN-.                                                   |       |   
   |       +-ALTER--+--------+--| column-alteration |----------------------------+       |   
   |       |         .-COLUMN-.                                                  |       |   
   |       +-RENAME--+--------+--source-column-name--TO--target-column-name------+       |   
   |       +-DROP--+-PRIMARY KEY---------------------------+---------------------+       |   
   |       |       +-+-FOREIGN KEY-+--constraint-name------+                     |       |   
   |       |       | +-UNIQUE------+                       |                     |       |   
   |       |       | +-CHECK-------+                       |                     |       |   
   |       |       | '-CONSTRAINT--'                       |                     |       |   
   |       |       | .-COLUMN-.               .-CASCADE--. |                     |       |   
   |       |       +-+--------+--column-name--+----------+-+                     |       |   
   |       |       |                          '-RESTRICT-' |                     |       |   
   |       |       '-RESTRICT ON DROP----------------------'                     |       |   
   |       +-DROP DISTRIBUTION---------------------------------------------------+       |   
   |       |       .-MATERIALIZED-.                                              |       |   
   |       +-DROP--+--------------+--QUERY---------------------------------------+       |   
   |       +-DATA CAPTURE--+-NONE---------------------------------+--------------+       |   
   |       |               '-CHANGES--+-------------------------+-'              |       |   
   |       |                          '-INCLUDE LONGVAR COLUMNS-'                |       |   
   |       +-ACTIVATE NOT LOGGED INITIALLY--+------------------+-----------------+       |   
   |       |                                '-WITH EMPTY TABLE-'                 |       |   
   |       +-PCTFREE--integer----------------------------------------------------+       |   
   |       +-LOCKSIZE--+-ROW---------+-------------------------------------------+       |   
   |       |           +-BLOCKINSERT-+                                           |       |   
   |       |           '-TABLE-------'                                           |       |   
   |       +-APPEND--+-ON--+-----------------------------------------------------+       |   
   |       |         '-OFF-'                                                     |       |   
   |       |                   .-CARDINALITY-.                                   |       |   
   |       +-+-VOLATILE-----+--+-------------+-----------------------------------+       |   
   |       | '-NOT VOLATILE-'                                                    |       |   
   |       +-COMPRESS--+-YES-+---------------------------------------------------+       |   
   |       |           '-NO--'                                                   |       |   
   |       +-+-ACTIVATE---+--VALUE COMPRESSION-----------------------------------+       |   
   |       | '-DEACTIVATE-'                                                      |       |   
   |       '-LOG INDEX BUILD--+-NULL-+-------------------------------------------'       |   
   |                          +-OFF--+                                                   |   
   |                          '-ON---'                                                   |   
   +-ADD PARTITION--| add-partition |----------------------------------------------------+   
   +-ATTACH PARTITION--| attach-partition |----------------------------------------------+   
   +-DETACH PARTITION--partition-name--INTO--table-name1---------------------------------+   
   +-ADD SECURITY POLICY--policy-name----------------------------------------------------+   
   '-DROP SECURITY POLICY----------------------------------------------------------------'   

add-partition

|--+----------------+--| boundary-spec |--+---------------------+-->
   '-partition-name-'                     '-IN--tablespace-name-'   

>--+---------------------------------------------------------+--|
   '-INDEX IN--tablespace-name--+--------------------------+-'   
                                '-LONG IN--tablespace-name-'     

boundary-spec

|--+-| starting-clause |--| ending-clause |-+-------------------|
   '-| ending-clause |----------------------'   

starting-clause

                            .-,------------.        
             .-FROM-.       V              |        
|--STARTING--+------+--+-(----+-constant-+-+--)-+--------------->
                       |      +-MINVALUE-+      |   
                       |      '-MAXVALUE-'      |   
                       '-+-constant-+-----------'   
                         +-MINVALUE-+               
                         '-MAXVALUE-'               

   .-INCLUSIVE-.   
>--+-----------+------------------------------------------------|
   '-EXCLUSIVE-'   

ending-clause

                        .-,------------.                       
           .-AT-.       V              |       .-INCLUSIVE-.   
|--ENDING--+----+--+-(----+-constant-+-+--)-+--+-----------+----|
                   |      +-MINVALUE-+      |  '-EXCLUSIVE-'   
                   |      '-MAXVALUE-'      |                  
                   '-+-constant-+-----------'                  
                     +-MINVALUE-+                              
                     '-MAXVALUE-'                              

attach-partition

|--+----------------+--| boundary-spec |--FROM--table-name------>
   '-partition-name-'                                        

   .-BUILD MISSING INDEXES----.   
>--+--------------------------+---------------------------------|
   '-REQUIRE MATCHING INDEXES-'   

column-definition

|--column-name--+-------------------+--+--------------------+---|
                |               (1) |  '-| column-options |-'   
                '-| data-type |-----'                           

column-options

   .--------------------------------------------------------------------------------------------------.   
   V                                                                                                  |   
|----+----------------------------------------------------------------------------------------------+-+--|
     +-NOT NULL-------------------------------------------------------------------------------------+     
     |                 (2)                                                                          |     
     +-| lob-options |------------------------------------------------------------------------------+     
     |                              (3)                                                             |     
     +-SCOPE--+-typed-table-name2-+-----------------------------------------------------------------+     
     |        '-typed-view-name2--'                                                                 |     
     +-+-----------------------------+--+-+-PRIMARY KEY-+-----------------------------------------+-+     
     | '-CONSTRAINT--constraint-name-'  | '-UNIQUE------'                                         | |     
     |                                  +-| references-clause |-----------------------------------+ |     
     |                                  '-CHECK--(--check-condition--)--| constraint-attributes |-' |     
     +-| generated-column-definition |--------------------------------------------------------------+     
     +-COMPRESS SYSTEM DEFAULT----------------------------------------------------------------------+     
     | .-COLUMN-.                                                                                   |     
     +-+--------+--SECURED WITH--security-label-name------------------------------------------------+     
     | .-NOT HIDDEN------------.                                                                    |     
     | |                   (4) |                                                                    |     
     '-+-IMPLICITLY HIDDEN-----+--------------------------------------------------------------------'     

lob-options

      .-LOGGED-----.     .-NOT COMPACT-.      
|--●--+------------+--●--+-------------+--●---------------------|
      '-NOT LOGGED-'     '-COMPACT-----'      

references-clause

|--REFERENCES--+-table-name-+--+-----------------------+-------->
               '-nickname---'  |    .-,-----------.    |   
                               |    V             |    |   
                               '-(----column-name-+--)-'   

>--| rule-clause |--| constraint-attributes |-------------------|

rule-clause

      .-ON DELETE NO ACTION-----.     .-ON UPDATE NO ACTION-.      
|--●--+-------------------------+--●--+---------------------+--●--|
      '-ON DELETE--+-RESTRICT-+-'     '-ON UPDATE RESTRICT--'      
                   +-CASCADE--+                                    
                   '-SET NULL-'                                    

constraint-attributes

      .-ENFORCED-----.     .-ENABLE QUERY OPTIMIZATION--.      
|--●--+--------------+--●--+----------------------------+--●----|
      '-NOT ENFORCED-'     '-DISABLE QUERY OPTIMIZATION-'      

generated-column-definition

|--+-| default-clause |--------------------------------------------+--|
   |            .-ALWAYS-----.                                     |   
   +-GENERATED--+------------+--| as-row-change-timestamp-clause |-+   
   |            '-BY DEFAULT-'                                     |   
   |            .-ALWAYS-.                                         |   
   '-GENERATED--+--------+--AS--(--generation-expression--)--------'   

default-clause

   .-WITH-.                                                                    
|--+------+--DEFAULT--+----------------------------------------------------+--|
                      +-constant-------------------------------------------+   
                      +-datetime-special-register--------------------------+   
                      +-user-special-register------------------------------+   
                      +-CURRENT SCHEMA-------------------------------------+   
                      +-NULL-----------------------------------------------+   
                      +-cast-function--(--+-constant------------------+--)-+   
                      |                   +-datetime-special-register-+    |   
                      |                   +-user-special-register-----+    |   
                      |                   '-CURRENT SCHEMA------------'    |   
                      +-EMPTY_CLOB()---------------------------------------+   
                      +-EMPTY_DBCLOB()-------------------------------------+   
                      '-EMPTY_BLOB()---------------------------------------'   

unique-constraint

|--+-----------------------------+--+-UNIQUE------+------------->
   '-CONSTRAINT--constraint-name-'  '-PRIMARY KEY-'   

      .-,-----------.      
      V             |      
>--(----column-name-+--)----------------------------------------|

referential-constraint

|--+-----------------------------+------------------------------>
   '-CONSTRAINT--constraint-name-'   

                   .-,-----------.                             
                   V             |                             
>--FOREIGN KEY--(----column-name-+--)--| references-clause |----|

check-constraint

|--+-----------------------------+------------------------------>
   '-CONSTRAINT--constraint-name-'   

>--CHECK--(--| check-condition |--)----------------------------->

>--| constraint-attributes |------------------------------------|

check-condition

|--+-search-condition----------+--------------------------------|
   '-| functional-dependency |-'   

functional-dependency

|--+-column-name-----------+--DETERMINED BY--+-column-name-----------+--|
   |    .-,-----------.    |                 |    .-,-----------.    |   
   |    V             |    |                 |    V             |    |   
   '-(----column-name-+--)-'                 '-(----column-name-+--)-'   

distribution-clause

                               .-,-----------.      
                  .-HASH-.     V             |      
|--DISTRIBUTE BY--+------+--(----column-name-+--)---------------|

materialized-query-definition

|--(--fullselect--)--| refreshable-table-options |--------------|

refreshable-table-options

|--●--DATA INITIALLY DEFERRED--●--REFRESH--+-DEFERRED--+--●----->
                                           '-IMMEDIATE-'      

   .-ENABLE QUERY OPTIMIZATION--.      
>--+----------------------------+--●---------------------------->
   '-DISABLE QUERY OPTIMIZATION-'      

>--+-----------------------------------+--●---------------------|
   '-MAINTAINED BY--+-SYSTEM---------+-'      
                    +-USER-----------+        
                    '-FEDERATED_TOOL-'        

constraint-alteration

   .-----------------------------------------.   
   V  (5)                                    |   
|--------+-+-ENABLE--+--QUERY OPTIMIZATION-+-+------------------|
         | '-DISABLE-'                     |     
         '-+-----+--ENFORCED---------------'     
           '-NOT-'                               

column-alteration

|--column-name-------------------------------------------------->

>--+-SET--+-DATA TYPE--| altered-data-type |-----------+--------+--|
   |      +-| generated-column-alteration |------------+        |   
   |      +-EXPRESSION AS--(--generation-expression--)-+        |   
   |      +-INLINE LENGTH--integer---------------------+        |   
   |      '-NOT NULL-----------------------------------'        |   
   +-+-| generation-alteration |--+-------------------------+-+-+   
   | |                            '-| identity-alteration |-' | |   
   | '-| identity-alteration |--------------------------------' |   
   +-DROP--+-IDENTITY---+---------------------------------------+   
   |       +-EXPRESSION-+                                       |   
   |       +-DEFAULT----+                                       |   
   |       '-NOT NULL---'                                       |   
   +-ADD SCOPE--+-typed-table-name-+----------------------------+   
   |            '-typed-view-name--'                            |   
   +-COMPRESS--+-SYSTEM DEFAULT-+-------------------------------+   
   |           '-OFF------------'                               |   
   +-SECURED WITH--security-label-name--------------------------+   
   '-DROP COLUMN SECURITY---------------------------------------'   

altered-data-type

>>-| built-in-type |-------------------------------------------><

built-in-type

|--+-+-+-INTEGER-+-+-------------------------------------------------+--|
   | | '-INT-----' |                                                 |   
   | '-BIGINT------'                                                 |   
   |                  .-(5,0)-------------------.                    |   
   +-+-+-DECIMAL-+-+--+-------------------------+--------------------+   
   | | '-DEC-----' |  |          .-,0-------.   |                    |   
   | '-+-NUMERIC-+-'  '-(integer-+----------+-)-'                    |   
   |   '-NUM-----'               '-,integer-'                        |   
   |          .-(53)------.                                          |   
   +-+-FLOAT--+-----------+--+---------------------------------------+   
   | |        '-(integer)-'  |                                       |   
   | +-REAL------------------+                                       |   
   | |         .-PRECISION-. |                                       |   
   | '-DOUBLE--+-----------+-'                                       |   
   |           .-(34)-.                                              |   
   +-DECFLOAT--+------+----------------------------------------------+   
   |           '-(16)-'                                              |   
   |                    .-(1)-------.                                |   
   +-+-+-+-CHARACTER-+--+-----------+----------+--+--------------+-+-+   
   | | | '-CHAR------'  '-(integer)-'          |  '-FOR BIT DATA-' | |   
   | | '-+-VARCHAR----------------+--(integer)-'                   | |   
   | |   '-+-CHARACTER-+--VARYING-'                                | |   
   | |     '-CHAR------'                                           | |   
   | |                                  .-(1M)-------------.       | |   
   | '-+-CLOB------------------------+--+------------------+-------' |   
   |   '-+-CHARACTER-+--LARGE OBJECT-'  '-(integer-+---+-)-'         |   
   |     '-CHAR------'                             +-K-+             |   
   |                                               +-M-+             |   
   |                                               '-G-'             |   
   |            .-(1)-------.                                        |   
   +-+-GRAPHIC--+-----------+-------+--------------------------------+   
   | |          '-(integer)-'       |                                |   
   | +-VARGRAPHIC--(integer)--------+                                |   
   | |         .-(1M)-------------. |                                |   
   | '-DBCLOB--+------------------+-'                                |   
   |           '-(integer-+---+-)-'                                  |   
   |                      +-K-+                                      |   
   |                      +-M-+                                      |   
   |                      '-G-'                                      |   
   |                          .-(1M)-------------.                   |   
   '-+-BLOB----------------+--+------------------+-------------------'   
     '-BINARY LARGE OBJECT-'  '-(integer-+---+-)-'                       
                                         +-K-+                           
                                         +-M-+                           
                                         '-G-'                           

generated-column-alteration

|--+-| default-clause |-------------------------------------+---|
   |            .-ALWAYS-----.                              |   
   +-GENERATED--+------------+--| identity-options |--------+   
   |            '-BY DEFAULT-'                              |   
   |            .-ALWAYS-.                                  |   
   '-GENERATED--+--------+--AS--(--generation-expression--)-'   

default-clause

   .-WITH-.                                                                    
|--+------+--DEFAULT--+----------------------------------------------------+--|
                      +-constant-------------------------------------------+   
                      +-datetime-special-register--------------------------+   
                      +-user-special-register------------------------------+   
                      +-CURRENT SCHEMA-------------------------------------+   
                      +-NULL-----------------------------------------------+   
                      +-cast-function--(--+-constant------------------+--)-+   
                      |                   +-datetime-special-register-+    |   
                      |                   +-user-special-register-----+    |   
                      |                   '-CURRENT SCHEMA------------'    |   
                      +-EMPTY_CLOB()---------------------------------------+   
                      +-EMPTY_DBCLOB()-------------------------------------+   
                      '-EMPTY_BLOB()---------------------------------------'   

identity-options

|--AS IDENTITY-------------------------------------------------->

>--+------------------------------------------------------+-----|
   |    .--------------------------------------------.    |   
   |    V  (5)              .-1----------------.     |    |   
   '-(--------+-START WITH--+-numeric-constant-+---+-+--)-'   
              |               .-1----------------. |          
              +-INCREMENT BY--+-numeric-constant-+-+          
              | .-NO MINVALUE----------------.     |          
              +-+-MINVALUE--numeric-constant-+-----+          
              | .-NO MAXVALUE----------------.     |          
              +-+-MAXVALUE--numeric-constant-+-----+          
              | .-NO CYCLE-.                       |          
              +-+-CYCLE----+-----------------------+          
              | .-CACHE 20----------------.        |          
              '-+-NO CACHE----------------+--------'          
                '-CACHE--integer-constant-'                   

as-row-change-timestamp-clause

    (6)                                                   
|--------FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP---------|

generation-alteration

|--SET GENERATED--+-ALWAYS-----+--------------------------------|
                  '-BY DEFAULT-'   

identity-alteration

   .---------------------------------------------.   
   V  (5)                                        |   
|--------+-SET INCREMENT BY -numeric-constant--+-+--------------|
         +-SET--+-NO MINVALUE----------------+-+     
         |      '-MINVALUE--numeric-constant-' |     
         +-SET--+-NO MAXVALUE----------------+-+     
         |      '-MAXVALUE--numeric-constant-' |     
         +-SET--+-NO CYCLE-+-------------------+     
         |      '-CYCLE----'                   |     
         +-SET--+-NO CACHE----------------+----+     
         |      '-CACHE--integer-constant-'    |     
         +-SET--+-NO ORDER-+-------------------+     
         |      '-ORDER----'                   |     
         '-RESTART--+------------------------+-'     
                    '-WITH--numeric-constant-'       

注:
  1. 最初に選択された列オプションが generated-column-definition であれば、 data-type は省略できます。これは、生成式によって計算されることになります。
  2. lob-options 節は、 ラージ・オブジェクト・タイプ (CLOB、DBCLOB、および BLOB) と、 ラージ・オブジェクト・タイプに基づく特殊タイプに対してのみ適用されます。
  3. SCOPE 節は REF タイプに対してのみ適用されます。
  4. IMPLICITLY HIDDEN を指定できるのは、ROW CHANGE TIMESTAMP も指定される場合のみです。
  5. 同じ節を複数回指定することはできません。
  6. 最初に指定された column-option が generated-column-definition の場合は、行変更タイム・スタンプ列のデータ・タイプはオプションで、データ・タイプのデフォルトは TIMESTAMP(6) です。

説明

table-name
table-name は、現行サーバーに存在する表を示していなければなりません。 これはニックネームであってはならず (SQLSTATE 42809)、 ビュー、カタログ表、作成済み一時表、または宣言済み一時表であってもなりません (SQLSTATE 42995)。

table-name でマテリアライズ照会表を指定している場合、変更によって行えるのは、マテリアライズ照会の追加またはドロップ、NOT LOGGED INITIALLY のアクティブ化、RESTRICT ON DROP の追加またはドロップ、data capture、pctfree、locksize、append、volatile、data row compression、または value compression の変更だけです。

table-name が範囲がクラスター化された表を示している場合、 変更によって行えるのは、制約の追加・変更・ドロップ、NOT LOGGED INITIALLY の アクティブ化、 RESTRICT ON DROP の追加またはドロップ、locksize、data capture、または volatile の変更、および列のデ フォルト値の設定だけです。

ADD column-definition
列を表に追加します。 型付き表を使用することはできません (SQLSTATE 428DH)。 表のすべての既存の行で、新しい列の値はデフォルト値に設定されます。 新しい列はその表の最後の列になります。 つまり、当初 n 個の列があった場合、 追加された列は列 n+1 になります。

新しい列を追加する場合、すべての列のバイト・カウントの合計が、 最大レコード・サイズを超えてはなりません。

column-name
表に追加する列の名前です。 名前は非修飾でなければなりません。 表に既にある列名は使用できません (SQLSTATE 42711)。
data-type
『CREATE TABLE』の項に示されるデータ・タイプのいずれかです。
NOT NULL
列に NULL 値が入るのを防止します。 default-clause (DEFAULT 節) も指定する必要があります (SQLSTATE 42601)。
NOT HIDDEN または IMPLICITLY HIDDEN
列を隠し列と定義するかどうかを指定します。列を表の暗黙的参照に組み込むかどうか、SQL ステートメントで明示的に参照できるかどうかは隠し属性によって決まります。 デフォルトは NOT HIDDEN です。
NOT HIDDEN
列を表の暗黙的参照に組み込むこと、および列を明示的に参照できることを指定します。
IMPLICITLY HIDDEN
名前で明示的に参照されない限り列は SQL ステートメントから不可視であることを指定します。例えば、表に IMPLICITLY HIDDEN 節によって定義された列が組み込まれている場合、暗黙的に隠された列は SELECT * の結果に組み込まれません。 しかし、暗黙的に隠された列の名前を明示的に参照する SELECT の結果については、結果表にその列が組み込まれます。

IMPLICITLY HIDDEN は、ROW CHANGE TIMESTAMP 列にのみ指定する必要があります (SQLSTATE 42867)。ROW CHANGE TIMESTAMP FOR table-designator 式は IMPLICITLY HIDDEN ROW CHANGE TIMESTAMP 列に解決します。 したがって、ROW CHANGE TIMESTAMP 列は IMPLICITLY HIDDEN として表に追加することができ、この表から SELECT * を実行する既存のアプリケーションを、列を処理するために変更する必要はありません。 新規アプリケーションは列名が分からなくても、式を使用することによって常に列にアクセスすることができます。

lob-options
LOB データ・タイプのオプションを指定します。 『CREATE TABLE』の lob-options を参照してください。
SCOPE
参照タイプ列の有効範囲を指定します。
typed-table-name2
型付き表の名前。 column-name のデータ・タイプは REF(S) でなければなりません。 Styped-table-name2 のタイプを表します (SQLSTATE 428DM)。 値が typed-table-name2 の既存行を実際に参照していることを確認するための、 column-name のデフォルト値の検査は行われません。
typed-view-name2
型付きビューの名前。 column-name のデータ・タイプは REF(S) でなければなりません。 Styped-view-name2 のタイプを表します (SQLSTATE 428DM)。 値が typed-view-name2 の既存行を実際に参照していることを確認するための、 column-name のデフォルト値の検査は行われません。
CONSTRAINT constraint-name
制約の名前を指定します。 制約名 (constraint-name) は、 同じ ALTER TABLE ステートメントに既に指定されている制約、 あるいは表に既存の他の制約の名前であってはなりません (SQLSTATE 42710)。

ユーザーが制約名を指定しない場合は、表に定義されている既存の制約の ID の中でユニークな 18 バイトの長さの ID がシステムによって生成されます。 (ID は、"SQL" と、タイム・スタンプに基づいて生成される一連の 15 の数字から構成されます。)

主キー制約またはユニーク制約とともに使用した場合、 この constraint-name は、 制約をサポートするために作成される索引の名前として使用されます。 ユニーク制約に関連した索引名の詳細については、を参照してください。

PRIMARY KEY
これは、1 つの列からなる主キーを定義する簡単な方法です。 つまり、PRIMARY KEY が列 C の定義で指定されている場合、 その効果は、PRIMARY KEY(C) 節が独立した節として指定された場合と同じです。 列に NULL 値を含めることはできないので、 NOT NULL 属性も指定する必要があります (SQLSTATE 42831)。

後述の unique-constraint の説明の中の PRIMARY KEY を参照してください。

UNIQUE
これは、1 つの列からなるユニーク・キーを定義する簡単な方法です。 すなわち、UNIQUE を列 C の定義に指定すると、 UNIQUE(C) 節を独立した節として指定した場合と同じ結果になります。

後述の unique-constraint の説明の中の UNIQUE を参照してください。

references-clause
これは、1 つの列からなる外部キーを定義する簡単な方法です。 つまり、references-clause が列 C の定義に指定されている場合、 その効果は、 列として C しか指定されていない FOREIGN KEY 節の一部として references-clause が指定された場合と同じになります。

『CREATE TABLE』の references-clause を参照してください。

CHECK (check-condition)
これは、1 つの列に適用されるチェック制約を定義する簡単な方法です。 『CREATE TABLE』の check-condition を参照してください。
generated-column-definition
列の生成の詳細については、『CREATE TABLE』を参照してください。
default-clause
列のデフォルト値を指定します。
WITH
オプション・キーワード。
DEFAULT
INSERT で値が提供されなかった場合、 もしくは INSERT や UPDATE で DEFAULT が指定されている場合に、 デフォルト値を提供します。 DEFAULT キーワードの後に特定のデフォルト値の指定がない場合のデフォルト値は、 列のデータ・タイプによって異なります。 表 1 を参照してください。 列が XML または構造化タイプとして定義されている場合、 DEFAULT 節を指定することはできません。

列が特殊タイプを使用して定義される場合、列のデフォルト値は、 特殊タイプにキャストされたソース・データ・タイプのデフォルト値になります。

表 1. デフォルト値 (値が指定されない場合)
データ・タイプ デフォルト値
数値 0
固定長文字ストリング ブランク
可変長文字ストリング 長さ 0 のストリング
固定長 GRAPHIC ストリング 2 バイトのブランク
可変長 GRAPHIC ストリング 長さ 0 のストリング
日付 既存の行の場合、0001 年 1 月 1 日に対応する日付。 追加行の場合には、現在の日付。
時刻 既存の行の場合、0 時間 0 分 0 秒に対応する時刻。 追加行の場合には、現在の時刻。
タイム・スタンプ 既存の行の場合、0001 年 1 月 1 日 0 時 0 分 0 秒 0 マイクロ秒に対応する日付。 追加行の場合には、現在のタイム・スタンプ。
バイナリー・ストリング (blob) 長さ 0 のストリング

column-definition から DEFAULT を省略すると、 その列のデフォルト値として NULL 値が使用されます。

DEFAULT キーワードに指定できる値のタイプは、次のとおりです。

constant
列のデフォルト値として定数を指定します。 指定する定数は、次の条件を満たしていなければなりません。
  • 第 3 章に示されている割り当ての規則に従って、 その列に割り当てることができる値でなければなりません。
  • その列が浮動小数点数データ・タイプとして定義されている場合を除き、浮動小数点の定数を指定してはなりません。
  • 列のデータ・タイプが 10 進浮動小数点数の場合は、数値定数または 10 進浮動小数点特殊値でなければなりません。 浮動小数点定数はまず DOUBLE として解釈され、次に 10 進浮動小数点数に変換されます。 DECFLOAT(16) 列の場合、10 進定数の精度は 16 以下でなければなりません。
  • 定数が 10 進定数の場合、 その列のデータ・タイプの位取りを超えるゼロ以外の数字を含めてはなりません (例えば、 DECIMAL(5,2) の列のデフォルト値として 1.234 を指定することはできません)。
  • 指定する定数が 254 バイトを超えてはなりません。この制約には、 引用符文字や 16 進定数の X などの接頭部文字も含まれます。さらに、 定数が cast-function の引数の場合には、 完全修飾された関数名から取った文字や括弧も含めて、この制限を超えてはなりません。
datetime-special-register
INSERT、UPDATE、または LOAD の実行時における日時特殊レジスターの値 (CURRENT DATE、 CURRENT TIME、または CURRENT TIMESTAMP) を、その列のデフォルト値として指定します。 その列のデータ・タイプは、 指定した特殊レジスターに対応するデータ・タイプでなければなりません (例えば、 CURRENT DATE を指定した場合、データ・タイプは DATE でなければなりません)。 既存の行の場合は、ALTER TABLE ステートメントが処理される時点の現行日付、現行時刻、 または現行タイム・スタンプが値として使用されます。
user-special-register
INSERT、UPDATE、または LOAD の実行時におけるユーザー特殊レジスターの値 (CURRENT USER、 SESSION_USER、SYSTEM_USER) を、その列のデフォルトとして指定します。 その列のデータ・タイプは、 ユーザー特殊レジスターの長さ属性よりも短い文字ストリングであってはなりません。 なお、SESSION_USER の代わりに USER を、 CURRENT USER の代わりに CURRENT_USER を指定することもできます。 既存の行の場合、値は ALTER TABLE ステートメントの CURRENT USER、 SESSION_USER、または SYSTEM_USER になります。
CURRENT SCHEMA
INSERT、UPDATE、または LOAD の実行時における CURRENT SCHEMA 特殊レジスターの値を、 その列のデフォルト値として指定します。 CURRENT SCHEMA を指定した場合、その列のデータ・タイプは、 CURRENT SCHEMA 特殊レジスターの長さ属性よりも短い文字ストリングであってはなりません。 既存の行の場合は、 ALTER TABLE ステートメントが処理される時点における CURRENT SCHEMA 特殊レジスターの値です。
NULL
その列のデフォルト値として NULL を指定します。 NOT NULL の指定がある場合には、 DEFAULT NULL を同じ列定義に指定してはなりません。
cast-function
この形式のデフォルト値は、特殊タイプ (distinct type)、 BLOB、または日時 (DATE、TIME、 または TIMESTAMP) データ・タイプとして定義された列に対してのみ使用することができます。 特殊タイプで、BLOB や日時タイプに基づいている場合以外は、 関数名が列の特殊タイプの名前に一致していなければなりません。 スキーマ名で修飾されている場合には、 その特殊タイプのスキーマ名と同じでなければなりません。 修飾されていない場合には、 関数の解決で得られるスキーマ名は特殊タイプのスキーマ名と同じでなければなりません。 日時タイプに基づく特殊タイプで、デフォルト値が定数の場合、 必ず関数を使用する必要があります。さらに、その関数名は、 暗黙または明示のスキーマ名 SYSIBM を持つ特殊タイプのソース・タイプ名に一致していなければなりません。 他の日時列の場合は、対応する日時関数も使用できます。 BLOB または、BLOB に基づく特殊タイプの場合も、関数を使用する必要があります。 その関数名は、暗黙または明示のスキーマ名 SYSIBM を持つ BLOB でなければなりません。
constant
引数として定数を指定します。 指定する定数は、 特殊タイプのソース・タイプに関する定数の規則 (特殊タイプでない場合は、 データ・タイプに関する定数の規則) に従っていなければなりません。 cast-function が BLOB の場合には、 定数としてストリング定数を指定する必要があります。
datetime-special-register
CURRENT DATE、CURRENT TIME、または CURRENT TIMESTAMP を指定します。 列の特殊タイプのソース・タイプは、 指定した特殊レジスターに対応するデータ・タイプでなければなりません。
user-special-register
CURRENT USER、SESSION_USER、または SYSTEM_USER を指定します。 列の特殊タイプのソース・タイプのデータ・タイプは、 少なくとも 8 バイトの長さのストリング・データ・タイプでなければなりません。 cast-function が BLOB の場合には、 長さ属性が 8 バイト以上でなければなりません。
CURRENT SCHEMA
CURRENT SCHEMA 特殊レジスターの値を指定します。 列の特殊タイプのソース・タイプのデータ・タイプは、CURRENT SCHEMA 特殊レジスターの長さ属性よりも短い文字ストリングであってはなりません。cast-function が BLOB の場合には、 長さ属性が 8 バイト以上でなければなりません。
EMPTY_CLOB()、EMPTY_DBCLOB()、または EMPTY_BLOB()
その列のデフォルト値として長さゼロのストリングを指定します。 その列は、この関数の結果データ・タイプに対応するデータ・タイプを持っている必要があります。

指定した値が無効な場合、エラー (SQLSTATE 42894) が戻されます。

GENERATED
DB2® が列の値を生成することを指定します。
ALWAYS
行が表に挿入されるときや、generation-expression の結果値が変更されるたびに、 DB2 が常に列の値を生成することを指定します。 この式の結果は、表に保管されます。 データ伝搬や、アンロードおよび再ロード操作を実行しているのでなければ、 GENERATED ALWAYS が推奨されるオプションです。 GENERATED ALWAYS は、生成列に必須指定のオプションです。
BY DEFAULT
行が表に挿入されたり、更新されるときに、明示的に値を指定しないかぎり、 列に DEFAULT を指定して DB2 が列に値を生成することを指定します。 データ伝搬を使用したり、アンロードおよび再ロードを実行したりするときは、BY DEFAULT が推奨されるオプションです。
AS (generation-expression)
列定義が式に基づくことを指定します。SET INTEGRITY ステートメントを OFF NO ACCESS オプションとともに使用して、表を SET INTEGRITY ペンディング・アクセスなし状態にする必要があります。ALTER TABLE ステートメントの後、IMMEDIATE CHECKED および FORCE GENERATED オプションを伴う SET INTEGRITY ステートメントを使用して、新しい式に対してこの列にあるすべての値を更新および検査しなければなりません。 generation-expression による列の指定の詳細については、『CREATE TABLE』を参照してください。
COMPRESS SYSTEM DEFAULT
システム・デフォルト値 (つまり、 特定の値が指定されない場合にデータ・タイプとして使用されるデフォルト値) が最小限のスペースを使用して保管されるように指定します。 VALUE COMPRESSION 節が指定されていない場合には警告が出され (SQLSTATE 01648)、 システム・デフォルト値が最小限のスペースを使用して保管されるようにはなりません。

システム・デフォルト値がこのような方法で保管されると、 列に対する挿入や更新操作の際に余分な検査が行われるために、 若干パフォーマンスが低下します。

基本データ・タイプは、DATE、TIME、TIMESTAMP、XML、または構造化データ・タイプであってはなりません (SQLSTATE 42842)。 基本データ・タイプが可変長ストリングの場合には、この節は無視されます。 表が VALUE COMPRESSION に設定されている場合は、長さ 0 のストリング値は自動的に圧縮されます。

COLUMN SECURED WITH security-label-name
表に関連するセキュリティー・ポリシーに対応して存在するセキュリティー・ラベルを識別します。 名前は非修飾でなければなりません (SQLSTATE 42601)。 表にはセキュリティー・ポリシーが関連付けられている必要があります (SQLSTATE 55064)
ADD unique-constraint
ユニーク制約または主キー制約を定義します。 主キー制約またはユニーク制約を、副表に追加することはできません (SQLSTATE 429B3)。 階層最上部のスーパー表の場合、制約はその表および関連する副表すべてに適用されます。
CONSTRAINT constraint-name
主キー制約、またはユニーク制約の名前を指定します。 詳細については、 『CREATE TABLE』で constraint-name を参照してください。
UNIQUE (column-name...,)
指定した列で構成されるユニーク・キーを定義します。 指定する列は NOT NULL として定義されていなければなりません。 各 column-name (列名) は、表の列を指定するものでなければなりません。 また、同じ列を複数回指定することはできません。 名前は非修飾でなければなりません。 指定する列の数は 64 を超えてはならず、 その保管時の長さ合計は、ページ・サイズに対応する索引キー長制限値を超えてはなりません。 保管される列の長さについては、『CREATE TABLE』の『バイト・カウント』を参照してください。 キー長の制限については、『SQL の制限』を参照してください。 列の長さ属性がページ・サイズに対する索引キーの長さの上限を超えない場合でも、LOB、これらのタイプのうちのいずれかに基づく特殊タイプ、または構造化タイプは、ユニーク・キーの一部として使用できません (SQLSTATE 54008)。ユニーク・キーにある列セットは、 主キーまたは他のユニーク・キーの列セットと同じにすることはできません (SQLSTATE 01543)。 (LANGLEVEL が SQL92E または MIA の場合は、エラーが戻されます。SQLSTATE 42891) 指定した列セットに存在する値は、ユニークである必要があります (SQLSTATE 23515)。

既存の索引がユニーク・キー定義と一致しているかどうか判別するために、チェックが実行されます (索引内の INCLUDE 列はすべて無視されます)。 列の順序や方向 (ASC/DESC) の指定に関係なく、同じ列セットを指定していると、 索引定義は一致します。 ただしパーティション表の場合、表パーティション・キー列のスーパーセットではない列が含まれる非ユニーク・パーティション索引は、一致する索引と見なされません。

一致する索引定義が見つかると、その索引の記述は、 システムによりその索引が必要であることを示すように変更され、 索引がユニークでない場合はユニーク索引に変更されます (固有性を確実にした後)。 表に一致する索引が複数ある場合、既存のユニーク索引が選択されます。 ユニーク索引が複数あると、以下の唯一の例外を除いて選択は任意です。
  • パーティション表では、一致するユニークな非パーティション索引や、一致する非ユニーク索引 (パーティションまたは非パーティション) よりも、一致するユニークなパーティション索引が優先されます。
一致する索引が見つからない場合は、CREATE TABLE で説明するように、 その列に対してユニーク双方向索引が自動的に作成されます。 ユニーク制約に関連した索引名の詳細については、を参照してください。
PRIMARY KEY ...(column-name,)
指定された列で構成される主キーを定義します。 各 column-name (列名) は、表の列を指定していなければなりません。 また、同じ列を複数回指定することはできません。 名前は非修飾でなければなりません。 指定する列の数は 64 を超えてはならず、 その保管時の長さ合計は、ページ・サイズに対応する索引キー長制限値を超えてはなりません。 保管される列の長さについては、『CREATE TABLE』の『バイト・カウント』を参照してください。 キー長の制限については、『SQL の制限』を参照してください。 表には主キーがあってはならず、 指定する列は NOT NULL として定義されているものでなければなりません。 列の長さ属性がページ・サイズに対する索引キーの長さの上限を超えない場合でも、LOB、これらのタイプのうちのいずれかに基づく特殊タイプ、または構造化タイプは、主キーの一部として使用できません (SQLSTATE 54008)。主キーの列セットは、ユニーク・キーの列セットと同じであってはなりません (SQLSTATE 01543)。 (LANGLEVEL が SQL92E または MIA の場合は、エラーが戻されます。SQLSTATE 42891) 指定した列セットに存在する値は、ユニークである必要があります (SQLSTATE 23515)。

既存の索引が主キー定義と一致しているかどうか判別するために、 チェックが実行されます (索引内の INCLUDE 列はすべて無視されます)。 列の順序や方向 (ASC/DESC) の指定に関係なく、同じ列セットを指定していると、 索引定義は一致します。 ただしパーティション表の場合、表パーティション・キー列のスーパーセットではない列が含まれる非ユニーク・パーティション索引は、一致する索引と見なされません。

一致する索引定義が見つかると、その索引の記述は、 その索引が 1 次索引である (システムが必要としている) ことを示すように変更され、 索引がユニークでない場合はユニーク索引に変更されます (固有性を確実にした後)。 表に一致する索引が複数ある場合、既存のユニーク索引が選択されます。 ユニーク索引が複数あると、以下の唯一の例外を除いて選択は任意です。
  • パーティション表では、一致するユニークな非パーティション索引や、一致する非ユニーク索引 (パーティションまたは非パーティション) よりも、一致するユニークなパーティション索引が優先されます。
一致する索引が見つからない場合は、CREATE TABLE で説明するように、 その列に対してユニーク双方向索引が自動的に作成されます。 ユニーク制約に関連した索引名の詳細については、を参照してください。

1 つの表には、主キーを 1 つだけ定義することができます。

ADD referential-constraint
参照制約を定義します。 『CREATE TABLE』の referential-constraint を参照してください。
ADD check-constraint
チェック制約または機能従属関係を定義します。 『CREATE TABLE』の check-constraint を参照してください。
ADD distribution-clause
分散キーを定義します。 表は、単一パーティションのデータベース・パーティション・グループにある表スペースに定義する必要があり (SQLSTATE 55037)、既存の分散キーがあってはなりません (SQLSTATE 42889)。 分散キーが表に既に存在している場合には、新しい分散キーを追加する前に既存のキーをドロップする必要があります。 分散キーを、副表に追加することはできません (SQLSTATE 428DH)。 .
DISTRIBUTE BY HASH (column-name...)
指定した列を使用して、分散キーを定義します。 各 column-name (列名) は、表の列を指定していなければなりません。 また、同じ列を複数回指定することはできません。 名前は非修飾でなければなりません。 列のデータ・タイプが BLOB、CLOB、DBCLOB、XML、これらのいずれかのタイプの特殊タイプ、または構造化タイプである場合、分散キーの一部として列を使用することはできません。
ADD RESTRICT ON DROP
表をドロップできないように、また、表を含む表スペースをドロップできないように指定します。
ADD MATERIALIZED QUERY
materialized-query-definition
照会の最適化で使用するために、正規表をマテリアライズ照会表に変更します。 table-name で指定する表には、以下の条件があります。
  • マテリアライズ照会表として以前に定義されていてはならない。
  • 型付き表であってはならない。
  • 何らかの制約、ユニーク索引、またはトリガーが定義されていてはならない。
  • キャッシング使用不可とマークされたニックネームを参照してはならない。
  • 他のマテリアライズ照会表の定義で参照されていてはならない。
  • 照会の最適化に使用可能になっているビューの定義で参照されていてはならない。
表名が基準に適合しない場合、エラーが戻されます (SQLSTATE 428EW)。
fullselect
表の基礎となる照会を定義します。 既存の表の列は、fullselect の結果列と以下のような関係になければなりません (SQLSTATE 428EW)。
  • 列の数が同数でなければなりません。
  • 全く同じデータ・タイプでなければなりません。
  • 同じ順序を示す位置に同じ列名がなければなりません。

マテリアライズ照会表に fullselect を指定することについての詳細は、 『CREATE TABLE』を参照してください。 追加の制限事項としては、table-name は全選択で直接的にも間接的にも参照できません。

refreshable-table-options
マテリアライズ照会表を変更するためのリフレッシュ可能オプションを指定します。
DATA INITIALLY DEFERRED
REFRESH TABLE または SET INTEGRITY ステートメントを使用して、 表のデータを妥当性検査する必要があります。
REFRESH
表のデータを保守する方法を示します。
DEFERRED
REFRESH TABLE ステートメントを使っていつでも表のデータをリフレッシュできます。 表のデータには、 REFRESH TABLE ステートメント処理時のスナップショットである照会結果が反映されるにすぎません。 この属性を定義したマテリアライズ照会表には、INSERT、 UPDATE、 または DELETE ステートメントを使用できません (SQLSTATE 42807)。
IMMEDIATE
DELETE、INSERT、または UPDATE の一部として基礎表に加えられた変更は、 マテリアライズ照会表にカスケードされます。 その場合、表の内容は、どのポイント・イン・タイム指定でも、 指定した subselect (副選択) を処理する場合と同じ内容になります。 この属性を定義したマテリアライズ照会表には、INSERT、 UPDATE、 または DELETE ステートメントを使用できません (SQLSTATE 42807)。
ENABLE QUERY OPTIMIZATION
マテリアライズ照会表を照会の最適化に使用できるようにします。
DISABLE QUERY OPTIMIZATION
マテリアライズ照会表を照会の最適化に使用しません。 それでもその表を直接照会することはできます。
MAINTAINED BY
マテリアライズ照会表のデータが、システム、ユーザー、 またはレプリケーション・ツールのいずれによって保守されるかを指定します。
SYSTEM
マテリアライズ照会表のデータがシステムによって保守されるように指定します。
USER
マテリアライズ照会表のデータがユーザーによって保守されるように指定します。 ユーザーは、ユーザー保守のマテリアライズ照会表に対して、 更新、削除、また挿入操作を許可されます。 システム保守のマテリアライズ照会表で使用される REFRESH TABLE ステートメントは、 ユーザー保守のマテリアライズ照会表に対しては呼び出せません。 REFRESH DEFERRED マテリアライズ照会表だけが、MAINTAINED BY USER として定義できます。
FEDERATED_TOOL
マテリアライズ照会表のデータがレプリケーション・ツールによって保守されるように指定します。 システム保守のマテリアライズ照会表で使用される REFRESH TABLE ステートメントは、 フェデレーテッド・ツール保守のマテリアライズ照会表に対しては呼び出せません。 REFRESH DEFERRED のマテリアライズ照会表だけが、MAINTAINED BY FEDERATED_TOOL として定義できます。
ALTER FOREIGN KEY constraint-name
参照制約 constraint-name の制約属性を変更します。 constraint-name は既存の参照制約を指定する必要があります (SQLSTATE 42704)。
ALTER CHECK constraint-name
チェック制約または機能従属関係 constraint-name の制約属性を変更します。 constraint-name は、既存のチェック制約または機能従属関係を指定していなければなりません (SQLSTATE 42704)。
constraint-alteration
参照制約またはチェック制約に関連付けられた属性の変更のオプションです。
ENABLE QUERY OPTIMIZATION または DISABLE QUERY OPTIMIZATION
適切な状況下で、照会の最適化のために、 制約または機能従属関係を使用できるかどうかを指定します。
ENABLE QUERY OPTIMIZATION
制約が真であると想定され、照会の最適化に使用できます。
DISABLE QUERY OPTIMIZATION
制約を照会の最適化に使用できません。
ENFORCED または NOT ENFORCED
挿入、更新、削除などの通常の操作中に、 データベース・マネージャーによって制約が課せられるかどうかを指定します。
ENFORCED
制約を ENFORCED に変更します。 機能従属関係に ENFORCED を指定することはできません (SQLSTATE 42621)。
NOT ENFORCED
制約を NOT ENFORCED に変更します。 これは、表データが個別に制約に適合していることが分かっている場合のみに指定してください。データが実際には制約に適合していない場合、照会結果が予測不能になる可能性があります。
インフォメーショナル制約は、どのような場合でも違反すべきではありません。 インフォメーショナル制約は、照会の最適化において、および REFRESH IMMEDIATE MQT とステージング表の増分処理において使用されます。 制約に違反している場合、これらの処理によって予測不能な結果が生成されたり、正しくない MQT およびステージング表の内容が生成されたりすることがあります。例えば、親子関係にある表が保守される順序は重要です。 親子関係にある表に行を挿入する場合、まず最初に親表に行を挿入する必要があります。 親子関係にある表から行を削除するには、まず最初に子表から行を削除する必要があります。 これにより、どのような場合でも子表に孤立した行が存在しないようにすることができます。 インフォメーショナル制約に違反している場合、従属 MQT データとステージング表データの増分保守は、その違反しているインフォメーショナル制約に基づいて最適化される可能性があり、正しくないデータが生成されることがあります。
ALTER column-alteration
列の定義を変更します。 指定した属性だけが変更され、他の属性は変更されません。 型付き表の列は変更できません (SQLSTATE 428DH)。
column-name
変更される列の名前を指定します。 column-name は、表の既存列を指定するものでなければなりません (SQLSTATE 42703)。 名前は非修飾でなければなりません。 同じ ALTER TABLE ステートメントで追加、変更、またはドロップされる列を指す名前は指定できません (SQLSTATE 42711)。
SET DATA TYPE altered-data-type

列の新規データ・タイプを指定します。新規データ・タイプは、列の既存データ・タイプにキャスト可能でなければなりません (SQLSTATE 42837)。

既存データの非ブランク文字の切り捨てが発生するストリング・データ・タイプの変更は許可されません (SQLSTATE 42837)。

データ・タイプを変更した場合、表を再編成しないと表に完全にアクセスすることはできません (SQLSTATE 57016)。ただし、以下の場合を除きます。
  • VARCHAR 列または VARGRAPHIC 列の長さの増加
  • 既存データの末尾ブランクの切り捨てが発生しない VARCHAR 列または VARGRAPHIC 列の長さの縮小

必要に応じて管理ルーチン SYSPROC.ADMIN_REVALIDATE_DB_OBJECTS を呼び出して、表の再編成を行えます。表が SET INTEGRITY PENDING 状態の場合、表の再編成が必要なデータ・タイプの変更は指定できません (SQLSTATE 57007)。

ストリング・データ・タイプは、列が表パーティション・キーの列である場合、変更できません。

列が分散キーの列である場合、新規データ・タイプは以下の要件を満たしている必要があります (SQLSTATE 42997)。
  • 現在の列タイプと同じデータ・タイプである
  • 現在の列タイプと同じ長さである (ただし、VARCHAR データ・タイプ列および VARGRAPHIC データ・タイプ列の長さを大きくする場合を除く)
  • CHAR および VARCHAR データ・タイプの場合、FOR BIT DATA への変更 (またはその逆) は不可

データ・タイプが LOB の場合、指定される長さを既存の長さより小さくすることはできません (SQLSTATE 42837)。

ID 列のデータ・タイプは変更できません (SQLSTATE 42997)。

表に対してデータ・キャプチャーを有効にすることはできません (SQLSTATE 42997)。

以下のいずれかの条件が当てはまる場合、 列のデータ・タイプは変更できません (SQLSTATE 42893)。
  • 列が生成式列で、列が変更されると生成式列のデータが変更される
  • 列が生成式列の式で参照され、列が変更されると生成式列のデータが変更される
  • 列がチェック制約で参照され、列が変更されるとチェック制約が満たされない
  • 列が参照整合性制約で使用され、列が変更されると参照整合性制約が満たされない

列を変更する場合、すべての列のバイト・カウントの合計が、 最大レコード・サイズを超えてはなりません (SQLSTATE 54010)。 ユニーク制約または索引で列を使用する場合、新しい長さは、 ユニーク制約または索引の列の保管長の合計が、ページ・サイズに対応する索引キーの長さの上限を超えないようにしなければなりません (SQLSTATE 54008)。 保管される列の長さについては、『CREATE TABLE』の『バイト・カウント』を参照してください。 キー長の制限については、『SQL の制限』を参照してください。

auto_reval が DISABLED に設定されている場合、列を変更した時のカスケード効果は表 2に示されています。

表 2. 列の変更のカスケード効果
操作 影響
ビューまたはチェック制約によって参照される列を変更する。 変更処理中にオブジェクトが再生成されます。 ビューの場合、変更操作の後、オブジェクトのセマンティクスが変わり、オブジェクトについての関数やメソッドの解決方法が変わる可能性もあります。 チェック制約の場合、変更操作の結果としてオブジェクトのセマンティクスが変わるようであれば、操作は失敗します。
従属パッケージ、トリガー、または SQL ルーチンを持つ表の列を変更する。 オブジェクトが無効とマークされ、次回の使用時に再度有効性を確かめられます。
分解が使用可能になった XSROBJECT によって参照される表内の列のタイプを変更する。 XSROBJECT が分解操作不能とマークされます。 XSROBJECT の分解を再度使用可能にするには、マッピングの再調整が必要になる可能性があります。それに続いて、XSROBJECT に対して ALTER XSROBJECT ENABLE DECOMPOSITION ステートメントを実行します。
グローバル変数のデフォルトの式で参照される列の変更 グローバル変数のデフォルトの式は変更処理中に妥当性検査されます。 デフォルトの式で使用されるユーザー定義関数を解決できない場合、操作は失敗します。
SET generated-column-alteration
列の値を生成する方法を指定します。 これは、特定のデフォルト値、式、または ID 列としての列の定義という形を取ることができます。 列の既存のデフォルトが、別の生成技法に由来する場合は、そのデフォルトをドロップする必要があります。 それは、いずれかの DROP 節を使用して、同じ column-alteration の中で行うことができます。
default-clause
変更される列の新規デフォルト値を指定します。 その列は ID 列として既に定義されていてはならず、 生成式が定義されていてはなりません (SQLSTATE 42837)。 指定されるデフォルト値は、『割り当ておよび比較』で説明されている割り当ての規則に従って、 その列に割り当てることのできる値でなければなりません。 デフォルト値を変更しても、既存の行については、 この列に関連した値が変更されるわけではありません。
GENERATED ALWAYS または GENERATED BY DEFAULT
データベース・マネージャーがその列の値をいつ生成するかを指定します。 GENERATED BY DEFAULT は、値が提供されないときか、 列への割り当てに DEFAULT キーワードが使用されたときだけ、値が生成されることを指定します。 GENERATED ALWAYS は、データベース・マネージャーが常にその列の値を生成することを指定します。 GENERATED BY DEFAULT を generation-expression と一緒に指定することはできません。
identity-options
その列が表の ID 列であることを指定します。 その列は ID 列として既に定義されていてはならず、生成式を持つことはできず、 明示的デフォルトを持つこともできません (SQLSTATE 42837)。 1 つの表には 1 つしか ID 列があってはなりません (SQLSTATE 428C1)。 その列は NULL 可能でないものとして指定される必要があり (SQLSTATE 42997)、 列に関連したデータ・タイプは、 位取りがゼロの完全な数値データ・タイプでなければなりません (SQLSTATE 42815)。 完全な数値データ・タイプは次のいずれかです: SMALLINT、INTEGER、BIGINT、DECIMAL、 位取りがゼロの NUMERIC、またはこれらのいずれかのタイプに基づく特殊タイプ。 IDENTITY オプションの詳細については、『CREATE TABLE』を参照してください。
AS (generation-expression)
列定義が式に基づくことを指定します。その列は生成式で既に定義されていてはならず、ID 列であってはならず、 明示的デフォルトを持つこともできません (SQLSTATE 42837)。 generation-expression は、生成される列を定義する際に適用されるのと同じ規則に適合する必要があります。 generation-expression の結果データ・タイプは、 列のデータ・タイプに割り当て可能でなければなりません (SQLSTATE 42821)。 その列は、分散キー列で、または ORGANIZE BY 節の中で、参照されていてはなりません (SQLSTATE 42997)。
SET EXPRESSION AS (generation-expression)
列の式を、指定された generation-expression に変更します。 SET EXPRESSION AS では、SET INTEGRITY ステートメントを OFF オプションとともに使用して、表を SET INTEGRITY ペンディング状態にする必要があります。 ALTER TABLE ステートメントの後、IMMEDIATE CHECKED および FORCE GENERATED オプションを伴う SET INTEGRITY ステートメントを使用して、新しい式に対してこの列にあるすべての値を更新および検査しなければなりません。 列は、式に基づいて生成される列として定義されていなければなりません (SQLSTATE 42837)。 また表の PARTITIONING KEY、DIMENSIONS、 または KEY SEQUENCE 節に現れないようにする必要があります (SQLSTATE 42997)。 generation-expression は、生成される列を定義する際に適用されるのと同じ規則に適合する必要があります。 generation-expression の結果データ・タイプは、 列のデータ・タイプに割り当て可能でなければなりません (SQLSTATE 42821)。
SET INLINE LENGTH integer
既存の構造化タイプ、XML、または LOB データ・タイプ列のインライン長を変更します。インライン長は、基本表の行に格納する構造化タイプ、XML、または LOB データ・タイプのインスタンスの最大サイズをバイト単位で指示します。基本表の行にインラインで保管できない構造化タイプまたは XML データ・タイプのインスタンスは、LOB 値を保管するのと似た方法で、別個に保管されます。

column-name のデータ・タイプは、構造化タイプ、XML、または LOB データ・タイプでなければなりません (SQLSTATE 42842)。

構造化タイプ列のデフォルトのインライン長は、そのデータ・タイプのインライン長になります (明示的に指定するか、または CREATE TYPE ステートメント内のデフォルトとして)。構造化タイプのインライン長が 292 未満の場合、列のインライン長には値 292 が使われます。

明示的なインライン長の値は増やすことのみ可能で (SQLSTATE 429B2)、32673 を超えてはなりません (SQLSTATE 54010)。 構造化タイプ列または XML データ・タイプ列の場合、少なくとも 292 でなければなりません。LOB データ・タイプ列の場合、INLINE LENGTH は最大 LOB 記述子サイズより小さくてはなりません。

列を変更する場合、すべての列のバイト・カウントの合計が、行サイズの制限を超えてはなりません (SQLSTATE 54010)。

既に他の行とは別に保管されたデータは、このステートメントにより基本表の行にインラインで格納されるようになることはありません。 構造化タイプ列のインライン長を変更した利点を生かすには、 列のインライン長を変更した後に指定された表に対して REORG コマンドを呼び出します。既存の表内の XML データ・タイプ列のインライン長を変更した利点を生かすには、UPDATE ステートメントによってすべての行を更新してください。REORG コマンドは、XML 文書の行保管に対して影響を及ぼしません。LOB データ・タイプ列のインライン長を変更した利点を生かすには、LONGLOBDATA オプションを指定して REORG コマンドを使用するか、対応する LOB 列を UPDATE してください。以下に例を示します。
UPDATE table-name SET lob-column = lob-column 
   WHERE LENGTH(lob-column) <= chosen-inline-length - 4
table-name は LOB データ・タイプ列のインライン長が変更された表、lob-column は変更された LOB データ・タイプ列、chosen-inline-length は選択された INLINE LENGTH の新規値です。
SET NOT NULL
列に NULL 値を含むことができないよう指定します。 表の既存の行内のこの列に関しては、どの値も NULL 値にすることはできません (SQLSTATE 23502)。 この節は、列が参照制約の外部キーで SET NULL の DELETE 規則によって指定されていて、外部キー内に、他にまったく NULL 可能な列が存在しない場合には許可されません (SQLSTATE 42831)。 列に関してこの属性を変更すると、その後の表アクセスが許可される前に表の再編成が必要になります (SQLSTATE 57016)。 この操作は表データの妥当性検査を必要とするため、表が REORG ペンディング状態になっている時には実行できないという点に注意してください (SQLSTATE 57016)。 表に対してデータ・キャプチャーを有効にすることはできません (SQLSTATE 42997)。
FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP
列が表のタイム・スタンプ列であることを指定します。挿入される各行、および任意の列が更新される各行に対して、その列の値が生成されます。 ROW CHANGE TIMESTAMP 列に生成される値は、その行の挿入または更新の時刻に対応するタイム・スタンプです。1 つのステートメントによって複数の行が挿入または更新される場合、ROW CHANGE TIMESTAMP 列の値は行ごとに異なる可能性があります。

ROW CHANGE TIMESTAMP 列は 1 つの表内に 1 つだけ含めることができます (SQLSTATE 428C1)。 data-type を指定する場合は、TIMESTAMP または TIMESTAMP(6) でなければなりません (SQLSTATE 42842)。ROW CHANGE TIMESTAMP 列は DEFAULT 節を持つことができません (SQLSTATE 42623)。 ROW CHANGE TIMESTAMP 列には NOT NULL を指定する必要があります (SQLSTATE 42831)。

SET GENERATED ALWAYS または GENERATED BY DEFAULT
データベース・マネージャーがその列の値をいつ生成するかを指定します。 GENERATED BY DEFAULT は、値が提供されないときか、 列への割り当てに DEFAULT キーワードが使用されたときだけ、値が生成されることを指定します。 GENERATED ALWAYS は、データベース・マネージャーが常にその列の値を生成することを指定します。 その列は、ID 列に基づく生成列として既に定義されている、すなわち、 AS IDENTITY 節によって定義されている必要があります (SQLSTATE 42837)。
identity-alteration
列の識別属性を変更します。 その列は ID 列でなければなりません。
SET INCREMENT BY numeric-constant
連続した ID 列値のインターバルを指定します。 次に生成される ID 列の値は、最後に割り当てられた値に増分を適用することによって決まります。 列はあらかじめ IDENTITY 属性で定義されていなければなりません (SQLSTATE 42837)。

この値は、この列に割り当て可能な任意の正または負の値にすることができます (SQLSTATE 42815)。これは長精度整数定数の値を超えず (SQLSTATE 42820)、小数点の右側に非ゼロの数字がない値にします (SQLSTATE 428FA)。

この値が負の場合、ALTER ステートメント以降は降順になります。 この値が 0 の場合、または正の場合は、 ALTER ステートメント以降は昇順になります。

SET NO MINVALUE または MINVALUE numeric-constant
降順 ID 列が値の生成を循環または停止する最小値、あるいは最大値に達した後、 昇順 ID 列が循環する最小値を指定します。 列は、指定した表の中に存在していなければならず (SQLSTATE 42703)、 あらかじめ IDENTITY 属性で定義されていなければなりません (SQLSTATE 42837)。
NO MINVALUE
昇順シーケンスの場合、値は元の開始値です。 降順シーケンスの場合、列のデータ・タイプの最小値になります。
MINVALUE numeric-constant
最小値にする数値定数を指定します。 この値は、この列に割り当て可能な任意の正または負の値にすることができます (SQLSTATE 42815)。ただし最大値以下の値で (SQLSTATE 42815)、小数点の右側に非ゼロの数字がない値にします (SQLSTATE 428FA)。
SET NO MAXVALUE または MAXVALUE numeric-constant
昇順 ID 列が値の生成を循環または停止する最大値、あるいは最小値に達した後、 降順 ID 列が循環する最大値を指定します。 列は、指定した表の中に存在していなければならず (SQLSTATE 42703)、 あらかじめ IDENTITY 属性で定義されていなければなりません (SQLSTATE 42837)。
NO MAXVALUE
昇順シーケンスの場合、値は列のデータ・タイプの最大値です。 降順シーケンスの場合、値は最初の開始値です。
MAXVALUE numeric-constant
最大値にする数値定数を指定します。 この値は、この列に割り当て可能な任意の正または負の値にすることができます (SQLSTATE 42815)。ただし最小値以上の値で、(SQLSTATE 42815)、小数点の右側に非ゼロの数字がない値にします (SQLSTATE 428FA)。
SET NO CYCLE または CYCLE
その最大値または最小値が生成された後、この ID 列が値の生成を続行するかどうかを指定します。 列は、指定した表の中に存在していなければならず (SQLSTATE 42703)、 あらかじめ IDENTITY 属性で定義されていなければなりません (SQLSTATE 42837)。
NO CYCLE
最大値または最小値に達した後、ID 列について値が生成されないことを指定します。
CYCLE
最大値または最小値に達した後、この列について値の生成が続行されることを指定します。 このオプションが使用されると、昇順 ID 列が最大値に達した後は、その最小値が生成されます。 降順 ID 列が最小値に達した後は、その最大値が生成されます。 ID 列の最大値および最小値は、循環に使用される範囲を決定します。

CYCLE が有効な場合、一つの ID 列で生成される値が重複する可能性があります。 固有値が必要であれば (実際には必要ありません)、ID 列を使用して 1 列のユニーク索引を 定義することによって、固有性を確実にしてください。 このような ID 列にユニーク索引が存在し、固有ではない値が生成されると、エラーが起こります (SQLSTATE 23505)。

SET NO CACHE または CACHE integer-constant
特定の事前割り振り値を、 高速アクセスできるようメモリーに保存するかどうかを指定します。 これはパフォーマンスおよびチューニング・オプションです。列はあらかじめ IDENTITY 属性で定義されていなければなりません (SQLSTATE 42837)。
NO CACHE
ID 列の値を事前割り振りしないことを指定します。 データ共用環境では、IDENTITY 値は要求の順序で生成されなければならず、 NO CACHE オプションを使用する必要があります。

このオプションが指定されると、ID 列の値はキャッシュに保管されません。 この場合、新しい ID 値が要求されるたびに、ログに対して同期入出力が行われます。

CACHE integer-constant
事前割り振りされ、メモリーに保管される IDENTITY シーケンスの値の数を指定します。 ID 列について値が生成される場合、値を事前割り振りしてキャッシュに保管しておくと、 ログへの同期入出力が少なくなります。

ID 列に新しい値が必要でも使用可能な未使用の値がキャッシュにない場合、値の割り振りはログへの入出力を待機する必要があります。 ただし、ID 列に新しい値が必要で、未使用の値がキャッシュにあれば、 その ID 値の割り振りが、ログへの入出力なしで素早く行われます。

システム障害に起因するものであっても通常のものであっても、データベース非アクティブ化が起こると、 コミットされたステートメントで使用されていないキャッシュ済みシーケンス値はすべて失われます (使用されなくなります)。 CACHE オプションに指定する値は、システム障害の際に失われても構わない ID 列の値の最大数です。

最小値は 2 です (SQLSTATE 42815)。

SET NO ORDER または ORDER
要求の順序で ID 列の値が生成されるかどうかを指定します。 列は、指定した表の中に存在していなければならず (SQLSTATE 42703)、 あらかじめ IDENTITY 属性で定義されていなければなりません (SQLSTATE 42837)。
NO ORDER
要求の順序で ID 列の値を生成する必要がないことを指定します。
ORDER
要求の順序で ID 列の値が生成されることを指定します。
RESTART または RESTART WITH numeric-constant
ID 列に関連付けられたシーケンスの状態をリセットします。 WITH numeric-constant が指定されていないと、ID 列のシーケンスは、 作成されたときに開始値として (暗黙的または明示的のいずれかで) 定義された 値で再開始されます。

列は、指定した表の中に存在していなければならず (SQLSTATE 42703)、 あらかじめ IDENTITY 属性で定義されていなければなりません (SQLSTATE 42837)。 RESTART は、START WITH の元の値を変更することはありません

numeric-constant は数値定数で、小数点の右側に非ゼロの数字がない (SQLSTATE 428FA) かぎり、この列に割り当てることができる正または負の値にすることができます(SQLSTATE 42815)。 numeric-constant が列の次の値として使用されます。

DROP IDENTITY
列の識別属性をドロップし、その列を単なる数値データ・タイプ列にします。 その列が ID 列でない場合は、DROP IDENTITY は許可されません (SQLSTATE 42837)。
DROP EXPRESSION
列の生成された式属性をドロップし、その列を非生成の列にします。 その列が、生成された式列でない場合は、DROP EXPRESSION は許可されません (SQLSTATE 42837)。
DROP DEFAULT
列の現行デフォルトをドロップします。 指定される列には、デフォルト値がなければなりません (SQLSTATE 42837)。
DROP NOT NULL
列の NOT NULL 属性をドロップし、列が NULL 値を持つことを許可します。 この節は、列が主キーで指定されている場合、また表のユニーク制約で指定されている場合には許可されません (SQLSTATE 42831)。 列に関してこの属性を変更すると、その後の表アクセスが許可される前に表の再編成が必要になります (SQLSTATE 57016)。 表に対してデータ・キャプチャーを有効にすることはできません (SQLSTATE 42997)。
ADD SCOPE
有効範囲が未定義である既存の参照タイプ列に、有効範囲を追加します (SQLSTATE 428DK)。 変更する表が型付き表である場合、 列をスーパー表から継承することはできません (SQLSTATE 428DJ)。
typed-table-name
型付き表の名前。 column-name のデータ・タイプは REF(S) でなければなりません。 Styped-table-name のタイプを表します (SQLSTATE 428DM)。 値が typed-table-name の既存行を実際に参照していることを確認するための、 column-name の既存値の検査は行われません。
typed-view-name
型付きビューの名前。 column-name のデータ・タイプは REF(S) でなければなりません。 Styped-view-name のタイプを表します (SQLSTATE 428DM)。 値が typed-view-name の既存行を実際に参照していることを確認するための、column-name の既存値の検査は行われません。
COMPRESS
この列のデフォルト値をさらに効率よく保管するかどうかを指定します。
SYSTEM DEFAULT
システム・デフォルト値 (つまり、 特定の値が指定されない場合にデータ・タイプとして使用されるデフォルト値) が最小限のスペースを使用して保管されるように指定します。 表の VALUE COMPRESSION 属性がまだアクティブ化されていない場合には、 警告が戻され (SQLSTATE 01648)、システム・デフォルト値が最小限のスペースを使用して保管されるようにはなりません。

システム・デフォルト値がこのような方法で保管されると、 列上での挿入や更新操作の際に余分な検査が行われるために、若干パフォーマンスが低下します。

列の既存のデータは変更されません。 既存のデータを使用可能にして、 最小限のスペースを使用してシステム・デフォルト値を保管することの利点を生かすため、 オフラインでの表再編成を考慮してください。

オフ
システム・デフォルト値が列の正規値として保管されるように指定します。 列の既存のデータは変更されません。 既存のデータの変更のために、オフラインでの再編成をお勧めします。

基本データ・タイプは、DATE、TIME、または TIMESTAMP であってはなりません (SQLSTATE 42842)。 基本データ・タイプが可変長ストリングの場合には、この節は無視されます。 表が VALUE COMPRESSION に設定されている場合は、長さ 0 のストリング値は自動的に圧縮されます。

変更する表が型付き表である場合、 列をスーパー表から継承することはできません (SQLSTATE 428DJ)。

SECURED WITH security-label-name
表に関連するセキュリティー・ポリシーに対応して存在するセキュリティー・ラベルを識別します。 名前を修飾してはなりません (SQLSTATE 42601)。表にはセキュリティー・ポリシーが関連付けられている必要があります (SQLSTATE 55064)
DROP COLUMN SECURITY
列を無保護列に変更します。
RENAME COLUMN source-column-name TO target-column-name
source-column-name で指定されている列を、target-column-name で指定されている名前に名前変更します。 auto_reval データベース構成パラメーターが DISABLED に設定されている場合、ALTER TABLE ステートメントの RENAME COLUMN オプションは、再検証即時セマンティクスの制御下にある場合と同様に振る舞います。
source-column-name
名前変更する列の名前を指定します。source-column-name は、表の既存列を指定するものでなければなりません (SQLSTATE 42703)。名前は非修飾でなければなりません。 同じ ALTER TABLE ステートメントで追加、変更、またはドロップされる列を指す名前は指定できません (SQLSTATE 42711)。
target-column-name
列の新しい名前。名前は非修飾でなければなりません。 表に既にある列名を使用してはなりません (SQLSTATE 42711)。
DROP PRIMARY KEY
主キーの定義、およびその主キーに従属するすべての参照制約をドロップします。 表には主キーがなければなりません (SQLSTATE 42888)。
DROP FOREIGN KEY constraint-name
制約名が constraint-name の参照制約をドロップします。 constraint-name には参照制約を指定する必要があります (SQLSTATE 42704)。 参照制約のドロップにより起こることについては、を参照してください。
DROP UNIQUE constraint-name
制約名が constraint-name であるユニーク制約の定義、およびこのユニーク制約に従属するすべての参照制約をドロップします。 constraint-name は既存のユニーク制約を指定する必要があります (SQLSTATE 42704)。 ユニーク制約のドロップにより起こることについては、を参照してください。
DROP CHECK constraint-name
制約名が constraint-name のチェック制約をドロップします。 constraint-name は、 表に定義されている既存のチェック制約を指定していなければなりません (SQLSTATE 42704)。
DROP CONSTRAINT constraint-name
制約名が constraint-name の制約をドロップします。 constraint-name は、表に定義されている既存のチェック制約、参照制約、主キー、またはユニーク制約のいずれかを指定していなければなりません (SQLSTATE 42704)。 制約のドロップにより起こることについては、を参照してください。
DROP COLUMN
指定の列を表からドロップします。 型付き表を使用することはできません (SQLSTATE 428DH)。 表に対してデータ・キャプチャーを有効にすることはできません (SQLSTATE 42997)。 列をドロップする場合、表に対して更新、挿入、削除、または索引スキャンを実行する前に、表を再編成する必要があります (SQLSTATE 57016)。XML 列をドロップできるのは、表内の他の XML 列がすべて同時にドロップされる場合のみです。
column-name
ドロップする列を指定します。 列名は非修飾でなければなりません。 この名前は、指定の表の列を特定するものでなければなりません (SQLSTATE 42703)。 この名前は、表の唯一の列を示すものであってはなりません (SQLSTATE 42814)。 この名前は、表の分散キー、表パーティション・キー、または編成ディメンションの一部となっている列を指定するものであってはなりません (SQLSTATE 42997)。
CASCADE
オブジェクトに基づいて以下のアクションを指定します。
  • ドロップされる列に従属するすべてのビューは、作動不能とマークされます。
  • ドロップされる列に従属する索引、トリガー、SQL 関数、制約、またはグローバル変数もすべてドロップされます。
  • 列を含む表に従属する分解可能 XSROBJECT はすべて、分解に対して作動不能になります。
トリガーは、UPDATE OF 列リスト、またはトリガー・アクションのどこかで参照されていれば、列に従属します。 分解可能な XSROBJECT は、XML 要素または属性の表へのマッピングを含む場合、表に従属します。 SQL 関数またはグローバル変数が他のデータベース・オブジェクトに従属する場合、CASCADE オプションによってその関数またはグローバル関数をドロップできない可能性があります。 CASCADE はデフォルトです。
RESTRICT
いずれかのビュー、索引、トリガー、制約、またはグローバル変数が列に従属している場合、または、いずれかの分解可能な XSROBJECT がその列を含む表に従属している場合に、列をドロップできないことを指定します (SQLSTATE 42893)。 トリガーは、UPDATE OF 列リスト、またはトリガー・アクションのどこかで参照されていれば、列に従属します。 分解可能な XSROBJECT は、XML 要素または属性の表へのマッピングを含む場合、表に従属します。 検出された最初の従属オブジェクトは、管理ログで識別されます。
表 3. 列のドロップのカスケード効果
操作 RESTRICT の効果 CASCADE の効果
ビューまたはトリガーによって参照される列をドロップする。 列のドロップは許可されません。 そのオブジェクト自身とそのオブジェクトに従属するすべてのオブジェクトがドロップされます。
索引のキーで参照される列をドロップする。 索引で参照されているすべての列が、同じ ALTER TABLE ステートメントでドロップされていれば、索引のドロップが許可されます。 それ以外の場合は、列のドロップは許可されません。 索引がドロップされます。
ユニーク制約で参照されている列をドロップする。 ユニーク制約で参照されているすべての列が、同じ ALTER TABLE ステートメントでドロップされていれば、また、ユニーク制約が参照制約によって参照されていなければ、列と制約がドロップされます。(制約を成立させるために使用されている索引もドロップされます) それ以外の場合は、列のドロップは許可されません。 ユニーク制約と、そのユニーク制約を参照するあらゆる参照制約がドロップされます。 (これらの制約によって使用される索引もすべてドロップされます。)
参照制約で参照されている列をドロップする。 参照制約で参照されているすべての列が、同じ ALTER TABLE ステートメントでドロップされていれば、列と制約がドロップされます。 それ以外の場合は、列のドロップは許可されません。 参照制約がドロップされます。
ドロップされないシステム生成列によって参照されている列をドロップする。 列のドロップは許可されません。 列のドロップは許可されません。
チェック制約で参照されている列をドロップする。 列のドロップは許可されません。 チェック制約がドロップされます。
分解可能な XSROBJECT で参照されている列をドロップする。 列のドロップは許可されません。 XSROBJECT が分解操作不能とマークされます。 XSROBJECT の分解を再度使用可能にするには、マッピングの再調整が必要になる可能性があります。それに続いて、XSROBJECT に対して ALTER XSROBJECT ENABLE DECOMPOSITION ステートメントを実行します。
グローバル変数のデフォルトの式で参照される列のドロップ 列のドロップは許可されません。 グローバル変数はドロップされます。 ただし、グローバル変数に依存する他のオブジェクト (カスケードを許可しないオブジェクト) があるためにグローバル変数のドロップが許可されなければ、ドロップされません。
DROP RESTRICT ON DROP
表、および表を含む表スペースのドロップに関する制約事項があれば削除します。
DROP DISTRIBUTION
表の配分定義をドロップします。 表には配分定義がなければなりません (SQLSTATE 428FT)。 表の表スペースは、単一パーティションのデータベース・パーティション・グループ上で定義される必要があります。
DROP MATERIALIZED QUERY
表がマテリアライズ照会表と見なされなくなるように、マテリアライズ照会表を変更します。 table-name で指定される表は、 複製ではないマテリアライズ照会表として定義されていなければなりません (SQLSTATE 428EW)。 table-name の列の定義は変更されませんが、照会の最適化にこの表を使用することはできなくなり、 REFRESH TABLE ステートメントも使用できなくなります。
DATA CAPTURE
データの複製に関する追加情報をログに記録するか否かを指定します。

表が型付き表である場合、 このオプションはサポートされません (ルート表の場合は SQLSTATE 428DH で、 他の副表の場合は 428DR)。

NONE
追加情報をログに記録しないことを指定します。
CHANGES
この表に対する SQL 変更についての追加情報をログに書き込むことを指定します。 このオプションは、表を複製する場合で、 キャプチャー・プログラムを使用してログからこの表に対する変更内容をキャプチャーする場合に必須です。
INCLUDE LONGVAR COLUMNS
データ複製ユーティリティーが、 LONG VARCHAR または LONG VARGRAPHIC 列に対する変更をキャプチャーするようにします。 この節は、LONG VARCHAR または LONG VARGRAPHIC 列のない表に指定することもできます。 これは、LONG VARCHAR または LONG VARGRAPHIC 列を含むよう、 表を ALTER することができるためです。
ACTIVATE NOT LOGGED INITIALLY
現行の作業単位の表の NOT LOGGED INITIALLY 属性をアクティブ化します。

このステートメントを使用して表を変更した後に、同一の作業単位内で INSERT、DELETE、UPDATE、CREATE INDEX、DROP INDEX、または ALTER TABLE ステートメントによって表に対して行う変更は、ログ記録されません。 NOT LOGGED INITIALLY 属性が活動状態にあるときに、 ALTER ステートメントによってシステム・カタログに対して行われた変更は、ログ記録されます。 同一の作業単位内でのシステム・カタログ情報に対する以降の変更は、ログ記録されます。

現行の作業単位が完了すると、NOT LOGGED INITIALLY 属性は非活動化され、 それ以降の作業単位の表で行われるすべての操作はログ記録されます。

カタログ表へのデータの挿入中にロックを避けるためにこのフィーチャーを使用する場合、 ALTER TABLE ステートメントにはこの節だけを指定してください。 ALTER TABLE ステートメントでこの節以外のものを指定すると、 カタログはロックされてしまいます。 ALTER TABLE ステートメントでこの節のみが指定されている場合、 SHARE ロックのみがシステム・カタログ表で獲得されます。 これにより、このステートメントの実行時から、このステートメントの実行作業単位の終了時までの間で、並行する競合の可能性をかなり低減させることができます。

表が型付き表である場合、このオプションは、型付き表階層のルート表に対してのみサポートされます (SQLSTATE 428DR)。

NOT LOGGED INITIALLY 属性の詳細については、 『CREATE TABLE』にあるこの属性に関する記述を参照してください。

注: NOT LOGGED INITIALLY 属性がアクティブな表に対してログに記録されないアクティビティーが生じた場合に、ステートメントが失敗する (ロールバックが発生する) か、または ROLLBACK TO SAVEPOINT が実行されると、その作業単位全体がロールバックされます (SQL1476N)。 さらに、NOT LOGGED INITIALLY 属性がアクティブ化されている表は、 ロールバックされた後にアクセス不能としてマークされ、ドロップしかできなくなります。 したがって、NOT LOGGED INITIALLY 属性がアクティブ化されている作業単位内では、エラーの可能性を最小限に抑えるべきです。
WITH EMPTY TABLE
現在表にあるすべてのデータを除去します。 一度データが除去されると、 RESTORE 機能を使用しなければ、そのデータの回復を行うことができません。 この ALTER ステートメントを発行した作業単位をロールバックしても、表データは元の状態には回復できません。

この処置が必要な場合、対象の表に定義された DELETE トリガーは行われません。 この表に存在するすべての索引の索引データも削除されます。

アタッチされたデータ・パーティションまたは論理的にデタッチされたパーティションを持つパーティション表は空にできません (SQLSTATE 42928)。

PCTFREE integer
ロードまたは表再編成操作において、 各ページに残すフリー・スペースのパーセンテージを指定します。 各ページの最初の行は、制約なしに追加されます。 ページに行が追加される際には、 少なくとも integer で指定された分 (%) のフリー・スペースがページに残されます。 PCTFREE 値は、load および table reorg ユーティリティーでのみ考慮されます。 integer の値は 0 から 99 です。 システム・カタログ (SYSCAT.TABLES) の PCTFREE 値 -1 は、デフォルト値として解釈されます。 表ページのデフォルトの PCTFREE 値は 0 です。表が型付き表である場合、このオプションは、型付き表階層のルート表に対してのみサポートされます (SQLSTATE 428DR)。
LOCKSIZE
表へのアクセス時に使用されるロックのサイズ (細分性) を指定します。 表定義でこのオプションを使用しても、通常のロック・エスカレーションの発生を妨げることはありません。 表が型付き表である場合、このオプションは、型付き表階層のルート表に対してのみサポートされます (SQLSTATE 428DR)。
ROW
行ロックの使用を指定します。 これは、表の作成時におけるデフォルトのロック・サイズです。
BLOCKINSERT
挿入操作時のブロック・ロックの使用を指定します。 これは、挿入の前にブロックに関して適切な排他ロックが取得され、挿入される行に関しては行ロックは行われないということを意味します。 このオプションは、別個のトランザクションが、表内の別個のセルに挿入を行う際に役立ちます。 同じセルへの挿入を行うトランザクションはやはり同時に挿入を行う可能性がありますが、それぞれに個別のブロックに対して挿入を行います。より多くのブロックが必要になる場合、これがセルのサイズに影響することもあります。 このオプションは、MDC 表に対してのみ有効です (SQLSTATE 42613)
TABLE
表ロックの使用を指定します。 これは、適切な共有ロックまたは排他ロックが表で獲得されており、 意図ロック ("意図なし" は除く) が使用されないことを意味します。 パーティション表に関しては、このロック方針は、表ロックおよびデータ・パーティション・ロックの両方に、アクセスされるあらゆるデータ・パーティションについて適用されます。この値を使用すると、獲得すべきロック数が限定されるため、照会のパフォーマンスが向上する可能性があります。 しかし、すべてのロックが表全体に対して獲得されるので、並行性も限定されます。
APPEND
データを表データの終わりに追加するか、またはデータ・ページの使用可能なフリー・スペースに追加するかを指定します。 表が型付き表である場合、このオプションは、型付き表階層のルート表に対してのみサポートされます (SQLSTATE 428DR)。
ON
表データが追加され、各ページのフリー・スペース情報は保持されません。 表にはクラスター索引があってはなりません (SQLSTATE 428CA)。
オフ
表データは使用可能なスペースに入れられます。 これは、表の作成時のデフォルト値です。

APPEND OFF を設定した後に表の再編成が必要となります。 これは、使用可能なフリー・スペース情報が不正確となるため、 データ挿入時のパフォーマンスの低下につながるからです。

VOLATILE CARDINALITY または NOT VOLATILE CARDINALITY
table-name のカーディナリティーが、 実行時に大きく変化し得るのかどうかをオプティマイザーに知らせます。 揮発性は、表そのものに対してではなく、表の行数に適用されます。 CARDINALITY はオプショナル・キーワードです。 デフォルトは NOT VOLATILE です。
VOLATILE
table-name のカーディナリティーが、実行時に大きく変化し得る (空になることも大きくなることもある) ことを知らせます。 表にアクセスするために、オプティマイザーは、統計に関係なく、表のスキャンではなく索引のスキャンを使います。 ただし、その場合、その索引は索引専用である (参照されるすべての列がその索引内にある) か、 索引のスキャンで述部を適用できることが条件になります。 リスト・プリフェッチ・アクセス方式は、この表へのアクセスには使用されません。 表が型付き表である場合、このオプションは、型付き表階層のルート表に対してのみサポートされます (SQLSTATE 428DR)。
NOT VOLATILE
table-name のカーディナリティーが揮発性でないことを指定します。 この表へのアクセス・プランは、既存の統計と、現行の最適化レベルに基づいて続けられます。
COMPRESS
表の行にデータ圧縮を適用するかどうかを指定します。
YES
データ行圧縮を使用可能にすることを指定します。表に対する挿入と更新の操作で、圧縮が行われるようになります。表のコンプレッション・ディクショナリーが存在していなければ、表に十分なデータが取り込まれた後で、コンプレッション・ディクショナリーが自動的に作成され、行が圧縮の対象になります。表に既存のコンプレッション・ディクショナリーがあれば、そのディクショナリーによる圧縮が再びアクティブになり、行が圧縮の対象になります。これは、XML ストレージ・オブジェクト内のデータにも適用されます。XML ストレージ・オブジェクト内に十分にデータがある場合、コンプレッション・ディクショナリーが自動的に作成され、XML 文書は圧縮の対象になります。索引圧縮は、CREATE INDEX ステートメントで明示的に使用不可にしない限りは、新しい索引で使用可能になります。ALTER INDEX ステートメントを使用して、既存の索引を圧縮できます。
NO
データ行圧縮を使用不可にすることを指定します。表に対する挿入と更新の操作で、圧縮が行われなくなります。圧縮フォーマットの表内の行は、更新時に非圧縮フォーマットに変換されるまで、そのまま圧縮フォーマットになります。 表の非インプレース再編成を行うと、圧縮された行はすべて解凍されます。 コンプレッション・ディクショナリーが存在する場合は、表の再初期設定または切り捨ての際に廃棄されます (例えば置換操作の際など)。 索引圧縮は、CREATE INDEX ステートメントで明示的に使用可能にしない限りは、新しい索引で使用不可になります。ALTER INDEX ステートメントを使用して、既存の索引に関する索引圧縮を明示的に使用不可にできます。
VALUE COMPRESSION
使用される行形式を判別します。 それぞれのデータ・タイプは、使用される行形式に応じた、異なるバイト・カウントを持ちます。 詳細については、『CREATE TABLE』の『バイト・カウント』を参照してください。 更新操作により、既存の行を新しい行形式に変更します。 既存の行の更新操作のパフォーマンスを向上させるには、オフラインでの表再編成をお勧めします。 これはまた、表の消費スペースの削減にもつながります。 『データ・タイプごとの列のバイト・カウント』という表の適切な列を使用して行サイズを計算すると (『CREATE TABLE』を参照のこと)、『各表スペースのページ・サイズの列数および行サイズの制限』という名前の表に示された行サイズの制限内に収まらなくなる場合には、エラーが戻されます (SQLSTATE 54010)。 表が型付き表である場合、このオプションは、型付き表階層のルート表に対してのみサポートされます (SQLSTATE 428DR)。
ACTIVATE
NULL 値は 3 バイトを使用して保管されます。 これは、すべてのデータ・タイプの列に対して VALUE COMPRESSION がアクティブでない場合と同じスペース、またはそれより少ないスペースです (CHAR(1) は例外)。 列が NULL 可能として定義されているかいないかは、行サイズ計算には影響しません。 データ・タイプが VARCHAR、VARGRAPHIC、CLOB、DBCLOB、または BLOB である列の、長さがゼロのデータ値は、2 バイトだけ使用して保管されます。これは、VALUE COMPRESSION がアクティブでない場合に必要とされるストレージを下回ります。 COMPRESS SYSTEM DEFAULT オプションを使用して列を定義すると、列のシステム・デフォルト値も 合計 3 バイトのストレージを使用して保管できるようになります。 これをサポートする行形式は、各データ・タイプのバイト・カウントを決定し、NULL 値、長さがゼロの値、またはシステム・デフォルト値への更新、またはそれらの値からの更新を行う際に、データ・フラグメントの原因となる傾向があります。
DEACTIVATE
NULL 値は、今後の更新のために確保されたスペースと一緒に保管されます。 このスペースは、可変長の列のためには確保されません。 またそのようにすると、列のシステム・デフォルト値のストレージを効率的にサポートしません。 列が COMPRESS SYSTEM DEFAULT 属性を既に有していると、警告が出されます (SQLSTATE 01648)。
LOG INDEX BUILD
この表で索引の作成、再作成、または再編成の操作を行う際に実行されるロギングのレベルを指定します。
NULL
logindexbuild データベース構成パラメーターの値を使用して、 索引作成操作を完全にログに記録するかどうかを指定します。 これは、表が作成されるときのデフォルトです。
オフ
この表での索引作成操作が最小限ログに記録されることを指定します。 この値は、logindexbuild データベース構成パラメーターの設定をオーバーライドします。
ON
この表での索引作成操作が完全にログに記録されることを指定します。 この値は、logindexbuild データベース構成パラメーターの設定をオーバーライドします。
ADD PARTITION add-partition
パーティション表に 1 つ以上のデータ・パーティションを追加します。 指定された表がパーティション表でない場合、エラーが戻されます (SQLSTATE 428FT)。 データ・パーティションの数は、32 767 を超えてはなりません。
partition-name
データ・パーティションの名前を指定します。 この名前は、表の他のいずれのデータ・パーティションとも同じであってはなりません (SQLSTATE 42710)。 この節を指定しない場合は、「PART」の後に文字形式の整数値が付いた名前になります (このようにして、その表での固有の名前になります)。
boundary-spec
新規のデータ・パーティションの値の範囲を指定します。 この範囲は、既存のデータ・パーティションの範囲と重なり合ってはなりません (SQLSTATE 56016)。 starting-clause および ending-clause についての説明は、『CREATE TABLE』を参照してください。

starting-clause が省略されると、新規のデータ・パーティションは、表の末尾に入るものと想定されます。 ending-clause が省略されると、新規のデータ・パーティションは、表の先頭に入るものと想定されます。

IN tablespace-name
データ・パーティションが保管される表スペースを指定します。 指定する表スペースは、パーティション表の他の表スペースと同じページ・サイズ、同じデータベース・パーティション・グループ、同じスペース管理方式でなければなりません (SQLSTATE 42838)。 これは、同じ表の他のデータ・パーティションに既に使用されている表スペース、あるいは、この表によって現在使用されていない表スペースとすることもできます。しかし、ステートメントの許可 ID には、その表スペースに対する USE 特権が必要です (SQLSTATE 42727)。 この節が指定されなかった場合、表のデータ・パーティションのうち、最初の可視パーティションまたはアタッチされたパーティションの表スペースが使用されます。
INDEX IN tablespace-name
データ・パーティション上のパーティション索引が保管される表スペースを指定します。INDEX IN 節を指定しない場合は、データ・パーティション上のパーティション索引は、データ・パーティションと同じ表スペースに保管されます。

新規の索引パーティションで使用される表スペースは、デフォルトであっても INDEX IN 節で指定されていても、他のすべての索引パーティションで使用される表スペースのタイプ (SMS または DMS)、ページ・サイズ、およびエクステント・サイズと一致していなければなりません (SQLSTATE 42838)。

LONG IN tablespace-name
長い列データを含むデータ・パーティションが保管される表スペースを指定します。 指定する表スペースは、パーティション表の他の表スペースおよびデータ・パーティションと同じページ・サイズ、同じデータベース・パーティション・グループ、同じスペース管理方式でなければなりません (SQLSTATE 42838)。ステートメントの許可 ID には、その表スペースに対する USE 特権が必要です。 指定した表スペースのページ・サイズおよびエクステント・サイズは、パーティション表の他のデータ・パーティションのページ・サイズおよびエクステント・サイズと異なる可能性があります。

パーティション表で LONG IN 節の使用を制御する規則については、『パーティション表でのラージ・オブジェクトの動作』を参照してください。

ATTACH PARTITION attach-partition
他の表を新規のデータ・パーティションとしてアタッチします。 アタッチされる表のデータ・オブジェクトは、アタッチ先の表の新規パーティションになります。 データ移動は一切ありません。 表は SET INTEGRITY ペンディング状態となり、参照整合性検査は、SET INTEGRITY ステートメントの実行まで据え置かれます。 ALTER TABLE のアタッチ操作では、IN 節または LONG IN 節を使用することはできません。 そのデータ・パーティションの LOB の配置は、ソース表の作成時に決定されます。 パーティション表で LONG IN 節の使用を制御する規則については、『パーティション表でのラージ・オブジェクトの動作』を参照してください。
partition-name
データ・パーティションの名前を指定します。 この名前は、表の他のいずれのデータ・パーティションとも同じであってはなりません (SQLSTATE 42710)。 この節を指定しない場合は、「PART」の後に文字形式の整数値が付いた名前になります (このようにして、その表での固有の名前になります)。
boundary-spec
新規のデータ・パーティションの値の範囲を指定します。 この範囲は、既存のデータ・パーティションの範囲と重なり合ってはなりません (SQLSTATE 56016)。 starting-clause および ending-clause についての説明は、『CREATE TABLE』を参照してください。

starting-clause が省略されると、新規のデータ・パーティションは、表の末尾に入るものと想定されます。 ending-clause が省略されると、新規のデータ・パーティションは、表の先頭に入るものと想定されます。

FROM table-name1
新規パーティションのデータのソースとして使用する表を指定します。 table-name1 の表定義は、複数のデータ・パーティションを持つことができず、以下の形で、変更される表と一致していなくてはなりません (SQLSTATE 428GE)。
  • 列数が同じ。
  • 表内の同じ位置 (順に並べた時の同じ位置) にある列のデータ・タイプが同じ。
  • 表内の同じ位置 (順に並べた時の同じ位置) にある列の NULL 可能特性が同じ。
  • ターゲット表に行変更タイム・スタンプ列がある場合、ソース表の対応する列は行変更タイム・スタンプ列でなければなりません。
  • またデータが分散されている場合は、同じ分散方法を使用して、同じデータベース・パーティション・グループ上で分散 する。
  • いずれかの表のデータが編成されている場合は、編成が一致する。
  • 構造化、XML、または LOB データ・タイプの場合、INLINE LENGTH の値が同じ。
table-name1 のデータが正しくアタッチされた後は、DROP TABLE table-name1 と同等の操作が実行され、この表はデータを持たなくなり、データベースから削除されます。
BUILD MISSING INDEXES
ターゲット表上のパーティション索引に対応する索引がソース表にない場合、SET INTEGRITY 操作により、既存のデータ・パーティション上のパーティション索引に対応する新規データ・パーティション上のパーティション索引を構築することを指定します。ターゲット表上のパーティション索引と一致しないソース表上の索引は、アタッチ処理中にドロップされます。
REQUIRE MATCHING INDEXES
ターゲット表上のパーティション索引と一致する索引がソース表になければならないことを指定します。これがない場合、エラーが戻され (SQLSTATE 428GE)、一致しない索引に関する情報が管理ログに書き込まれます。
REQUIRE MATCHING INDEXES 節が指定されておらず、ソース表上の索引がターゲット表上のすべてのパーティション索引と一致しない場合は、以下の動作が発生します。
  1. 一致する索引がソース表上になく、ユニーク索引であるかまたは REJECT INVALID VALUES を使用して定義されている XML 索引であるターゲット表上の索引の場合は、アタッチ操作が失敗します (SQLSTATE 428GE)。
  2. ソース表に一致する索引がない、ターゲット表上の他のすべての索引の場合、アタッチ操作中にソース表上の索引オブジェクトに無効のマークが付けられます。ソース表に索引がない場合は、空の索引オブジェクトが作成され、無効としてマークが付けられます。アタッチ操作は正常に実行されますが、新規データ・パーティション上の索引オブジェクトは無効としてマークが付けられます。通常、データ・パーティションに対して次に実行される操作は SET INTEGRITY です。SET INTEGRITY は、必要に応じて、最近アタッチしたデータ・パーティション上に索引オブジェクトを強制的に再構築します。索引の再構築により、新規データをオンラインにするのに必要な時間が長くなることがあります。
  3. 一致しない索引に関する情報が、管理ログに書き込まれます。
DETACH PARTITION partition-name INTO table-name1
変更される表からデータ・パーティション partition-name をデタッチし、そのデータ・パーティションを使用して、table-name1 という名前の新規表を作成します。 このデータ・パーティションは変更される表からデタッチされ、これを使用してデータ移動なしで新規表が作成されます。 変更される表の最後に残ったデータ・パーティションを指定することはできません (SQLSTATE 428G2)。
ADD SECURITY POLICY policy-name
セキュリティー・ポリシーを表に追加します。 セキュリティー・ポリシーは、現行サーバーに存在するものでなければなりません (SQLSTATE 42704)。 表に既存のセキュリティー・ポリシーがあってはなりません (SQLSTATE 55065)。また、型付き表 (SQLSTATE 428DH)、マテリアライズ照会表 (MQT)、またはステージング表 (SQLSTATE 428FG) であってはなりません。
DROP SECURITY POLICY
表からセキュリティー・ポリシーと、すべての LBAC 保護を削除します。 table-name によって指定される表は、セキュリティー・ポリシーによって保護される必要があります (SQLSTATE 428GT)。 表に、DB2SECURITYLABEL データ・タイプの列があれば、そのデータ・タイプは VARCHAR (128) FOR BIT DATA に変更されます。 表に保護された列が 1 つ以上あれば、それらの列は無保護になります。

規則

例 1: 1 文字の長さの RATING という名前の新しい列を、DEPARTMENT 表に追加します。
   ALTER TABLE DEPARTMENT
      ADD RATING CHAR(1)
例 2: SITE_NOTES という名前の新しい列を PROJECT 表に追加します。 SITE_NOTES は、最大 1000 バイトの長さの可変長列として作成します。 この列の値には関連する文字セットがなく、変換されません。
   ALTER TABLE PROJECT
      ADD SITE_NOTES  VARCHAR(1000) FOR BIT DATA
例 3: 以下の列が定義された EQUIPMENT という表が存在するものと想定します。
   Column Name        Data Type
   EQUIP_NO           INT
   EQUIP_DESC         VARCHAR(50)
   LOCATION           VARCHAR(50)
   EQUIP_OWNER        CHAR(3)
EQUIPMENT 表に、 所有者 (EQUIP_OWNER) は DEPARTMENT 表に存在する部門番号 (DEPTNO) でなければならない、 という参照制約を追加します。 DEPTNO は、DEPARTMENT 表の主キーです。 DEPARTMENT 表からある部門を削除する場合は、 その部門の所有するすべての備品の所有者 (EQUIP_OWNER) の値を割り当て解除する必要があります (つまり NULL 値に設定する必要があります)。 制約の名前は、DEPTQUIP です。
   ALTER TABLE EQUIPMENT
        ADD CONSTRAINT DEPTQUIP
         FOREIGN KEY (EQUIP_OWNER)
           REFERENCES DEPARTMENT
              ON DELETE SET NULL
さらに、備品レコードに関係した数量を記録できるようにするため、 追加の列が必要になります。 特に指定されない限り、EQUIP_QTY 列には値 1 を入れます。 NULL 値にしてはなりません。
   ALTER TABLE EQUIPMENT
     ADD COLUMN EQUIP_QTY
     SMALLINT NOT NULL DEFAULT 1
例 4: 表 EMPLOYEE を変更します。 各従業員の給与と歩合の合計が $30,000 を超えていなければならない、 という定義済みの REVENUE という名前のチェック制約を追加します。
   ALTER TABLE EMPLOYEE
     ADD CONSTRAINT REVENUE
     CHECK (SALARY + COMM > 30000)
例 5: 表 EMPLOYEE を変更します。 前に定義した制約 REVENUE をドロップします。
   ALTER TABLE EMPLOYEE
     DROP CONSTRAINT REVENUE
例 6: SQL の変更内容をデフォルトのフォーマットでログに記録するように表を変更します。
   ALTER TABLE SALARY1
     DATA CAPTURE NONE
例 7: SQL の変更内容を拡張フォーマットでログに記録するように表を変更します。
   ALTER TABLE SALARY2
     DATA CAPTURE CHANGES
例 8: EMPLOYEE 表を変更して、デフォルト値を指定して 4 つの新しい列を追加します。
  ALTER TABLE EMPLOYEE
     ADD COLUMN HEIGHT MEASURE   DEFAULT MEASURE(1)
     ADD COLUMN BIRTHDAY BIRTHDATE DEFAULT DATE('01-01-1850')
     ADD COLUMN FLAGS BLOB(1M)  DEFAULT BLOB(X'01')
     ADD COLUMN PHOTO PICTURE   DEFAULT BLOB(X'00')
デフォルト値の指定時に、これらのデフォルト値はさまざまな関数名を使用します。 MEASURE は INTEGER に基づく特殊タイプなため、MEASURE 関数が使用されます。 HEIGHT 列のデフォルト値は、MEASURE のソース・タイプは、BLOB または日時データ・タイプでないため、関数を使用しなくても指定しておくことができました。 BIRTHDATE は DATE に基づく特殊タイプなので、 DATE 関数を使用しています (この場合、BIRTHDATE は使用できません)。 FLAGS 列と PHOTO 列では、PHOTO が特殊タイプであるにもかかわらず、 BLOB 関数を使用してデフォルト値が指定されています。 BIRTHDAY、FLAGS、 および PHOTO 列のデフォルト値を指定するためには、関数を使用する必要があります。 タイプが、BLOB や日時データ・タイプのソースに基づく BLOB や特殊タイプだからです。
例 9: 以下の列のある CUSTOMERS という表が定義されます。
   Column Name        Data Type
   BRANCH_NO          SMALLINT
   CUSTOMER_NO        DECIMAL(7)
   CUSTOMER_NAME      VARCHAR(50)
この表では、主キーは BRANCH_NO 列と CUSTOMER_NO 列からなります。 表を分散するには、表に対して分散キーを作成する必要があります。 表は単一のデータベース・パーティションからなるデータベース・パーティション・グループの表スペースに定義する必要があります。 主キーは、分散キー列のスーパーセットである必要があり、 主キーの少なくとも 1 つの列が分散キーとして使用されている必要があります。 以下のようにして、BRANCH_NO を分散キーとして定義します。
   ALTER TABLE CUSTOMERS 
     ADD DISTRIBUTE BY HASH (BRANCH_NO)
例 10: リモート表 EMPLOYEE が、フェデレーテッド・システムに透過 DDL を使用して作成されました。 リモート表 EMPLOYEE を変更して、列 PHONE_NO および WORK_DEPT を追加します。また、主キーを 既存の列 EMP_NO および新規列 WORK_DEPT に追加します。
   ALTER TABLE EMPLOYEE
     ADD COLUMN PHONE_NO CHAR(4) NOT NULL
     ADD COLUMN WORK_DEPT CHAR(3)
     ADD PRIMARY KEY (EMP_NO, WORK_DEPT)
例 11: DEPARTMENT 表を変更して機能従属関係 FD1 を追加し、 次いで DEPARTMENT 表から機能従属関係をドロップします。
   ALTER TABLE DEPARTMENT
     ADD CONSTRAINT FD1
       CHECK ( DEPTNAME DETERMINED BY DEPTNO) NOT ENFORCED

   ALTER TABLE DEPARTMENT
     DROP CHECK FD1
例 12: EMPLOYEE 表の WORKDEPT 列のデフォルト値を 123 に変更します。
   ALTER TABLE EMPLOYEE
     ALTER COLUMN WORKDEPT
       SET DEFAULT '123'
例 13: セキュリティー・ポリシー DATA_ACCESS を EMPLOYEE 表に関連付けます。
   ALTER TABLE EMPLOYEE
     ADD SECURITY POLICY DATA_ACCESS
例 14: 表 EMPLOYEE を変更して、SALARY 列を保護します。
   ALTER TABLE EMPLOYEE
     ALTER COLUMN SALARY
     SECURED WITH EMPLOYEESECLABEL
例 15: 以下の列を伴って定義された SALARY_DATA という表があるとします。
Column Name            Data Type
-----------            ---------
EMP_NAME               VARCHAR(50) NOT NULL
EMP_ID                 SMALLINT NOT NULL
EMP_POSITION           VARCHAR(100) NOT NULL
SALARY                 DECIMAL(5,2)
PROMOTION_DATE         DATE NOT NULL
この表を変更して、給料を DECIMAL(6,2) 列に保管できるようにし、PROMOTION_DATE を NULL 値への設定が可能なオプションのフィールドにし、EMP_POSITION 列を除去します。
   ALTER TABLE SALARY_DATA
     ALTER COLUMN SALARY SET DATA TYPE DECIMAL(6,2)
     ALTER COLUMN PROMOTION_DATE DROP NOT NULL
     DROP COLUMN EMP_POSITION
例 16: DATE_ADDED という名前の列を表 BOOKS に追加します。この列のデフォルト値は現在のタイム・スタンプです。
   ALTER TABLE BOOKS 
     ADD COLUMN DATE_ADDED TIMESTAMP 
     WITH DEFAULT CURRENT TIMESTAMP