ALTER NICKNAME ステートメント
ALTER NICKNAME ステートメントは、データ・ソース・オブジェクト (表、 ビュー、またはファイルなど) に関連したニックネーム情報を変更します。
このステートメントは、以下の方法でフェデレーテッド・データベースに保管されている情報を変更します。
- データ・ソース・オブジェクトの列のローカル列名を変更する
- データ・ソース・オブジェクトの列のローカル・データ・タイプを変更する
- ニックネーム・オプションおよび列オプションを追加、設定、またはドロップする
- 主キーを追加またはドロップする
- 1 つ以上のユニーク制約、参照制約、またはチェック制約を追加またはドロップする
- 1 つ以上の参照制約属性またはチェック制約属性を変更する
- フェデレーテッド・サーバーでのデータのキャッシングを変更する
呼び出し
このステートメントは、アプリケーション・プログラムに組み込んだり、動的 SQL ステートメントを使用して発行したりすることができます。 これは、DYNAMICRULES の実行動作がパッケージに効力を持つ場合にのみ、動的に準備できる実行可能ステートメントです (SQLSTATE 42509)。
許可
ステートメントの許可 ID によって保持されている特権には、少なくとも以下のいずれかの権限が含まれていなければなりません。
- ステートメントで指定されたニックネームに対する ALTER 特権
- ステートメントで指定されたニックネームに対する CONTROL 特権
- ニックネームにスキーマ名がある場合は、スキーマに対する ALTERIN 特権
- スキーマに対する SCHEMAADM 権限 (ニックネームのスキーマ名が存在する場合)
- SYSCAT.TABLES カタログ・ビューの OWNER 列に記録されているそのニックネームの所有者
- DBADM 権限
構文
Notes:
- 1 You cannot specify both the ALTER COLUMN clause and an ADD, ALTER, or DROP informational constraint clause in the same ALTER NICKNAME statement.
- 2 If you need to specify the federated-column-options clause in addition to the LOCAL NAME parameter, the LOCAL TYPE parameter, or both, you must specify the federated-column-options clause last.
- 3 The specified distinct type cannot have any data type constraints and the source type cannot be an anchored data type (SQLSTATE 428H2).
- 4 DISABLE QUERY OPTIMIZATION is not supported for a unique or primary key constraint.
- 5 The same clause must not be specified more than once.
説明
- nickname
- 変更される列を含むデータ・ソース・オブジェクト (表、ビュー、 またはファイルなど) のニックネームを指定します。 ニックネームはカタログに記述されている必要があります。
- OPTIONS
- ニックネームを変更したときに追加、設定、またはドロップされるニックネーム・オプションを指示します。
- ADD
- ニックネーム・オプションを追加します。
- SET
- ニックネーム・オプションの設定を変更します。 ニックネーム・オプション名
- 追加または設定するニックネーム・オプション。 指定可能なオプションは、ニックネームの作成対象オブジェクトのデータ・ソースによって異なります。 データ・ソースと、それぞれに適用されるニックネーム・オプションのリストについては、 データ・ソース・オプションを参照してください。 ストリング定数
- 単一引用符で囲まれた文字ストリング定数として設定するニックネーム・オプション。
- DROP ニックネーム・オプション名
- ニックネーム・オプションをドロップします。
- ALTER COLUMN column-name
- 変更する列を指定します。 column-name は、フェデレーテッド・サーバーでのデータ・ソースにある表またはビューの列の、 現在の名前です。 column-name は、ニックネームの既存の列を指定するものでなければなりません (SQLSTATE 42703)。 同一の ALTER NICKNAME ステートメントで、同じ列名を複数回は参照できません (SQLSTATE 42711)。
- ローカル名 column-name
- 変更された列を参照するフェデレーテッド・サーバーによって指定される新しい名前は column-name です。 新しい名前を修飾したり、ニックネームの複数の列に対して同じ名前を使用することはできません (SQLSTATE 42711)。
- LOCAL TYPE ローカル・データ・タイプ
- 変更する列のデータ・タイプをマップする、新しいローカル・データ・タイプを指定します。 新しいタイプは local-data-type に示されます。
一部のラッパーは、SQL データ・タイプのサブセットのみをサポートします。 特定のデータ・タイプの説明については、
CREATE TABLE
ステートメントの説明を参照してください。 - built-in-type
- 組み込みデータ・タイプの説明については、『CREATE TABLE』を参照してください。
- OPTIONS
- COLUMN キーワードの後に指定した列の
どの列オプションを追加、設定、またはドロップするか指定します。
- ADD
- 列オプションを追加します。
- SET
- 列オプションの設定を変更します。 カラム・オプション名
- 追加または設定する列オプションを指定します。 ストリング定数
- column-option-name の設定を、文字ストリング定数として指定します。
- DROP カラム・オプション名
- 列オプションをドロップします。
- ADD 固有制約
- ユニーク制約を定義します。
『CREATE NICKNAME』
ステートメントの説明を参照してください。 - ADD 参照制約
- 参照制約を定義します。
『CREATE NICKNAME』
ステートメントの説明を参照してください。 - ADD チェック制約
- チェック制約を定義します。
『CREATE NICKNAME』
ステートメントの説明を参照してください。 - ALTER FOREIGN KEY 制約名
- 参照制約 constraint-name の制約属性を変更します。 制約属性の説明については、
「CREATE NICKNAME」
ステートメントを参照してください。 constraint-name は既存の参照制約を指定する必要があります (SQLSTATE 42704)。 - ALTER CHECK 制約名
- チェック制約 constraint-name の制約属性を変更します。 constraint-name には既存のチェック制約を指定する必要があります (SQLSTATE 42704)。 制約-変更
- 参照制約またはチェック制約に関連付けられた属性の変更のオプションを指定します。
- ENABLE QUERY OPTIMIZATION
- 適切な状況下では、制約を照会最適化に使用することができます。
- DISABLE QUERY OPTIMIZATION
- 制約を照会の最適化に使用できません。
- NOT ENFORCED
- 挿入、更新、削除などの通常の操作中に、
データベース・マネージャーによって制約が課せられないことを指定します。
- TRUSTED
- データは、制約に適合しているものとして信頼できます。 TRUSTED は、表のデータが個別に制約に適合していることが分かっている場合のみに使用してください。 データが実際には制約に適合していない場合、照会結果が予測不能になる可能性があります。 これはデフォルト・オプションです。
- NOT TRUSTED
- データは、制約に適合しているものとして信頼することはできません。 NOT TRUSTED の使用目的としては、データがほとんどの行では制約に適合しているものの、すべての行または将来追加される行が制約に適合することは個別には認識されない場合のためのものです。 制約が NOT TRUSTED で、照会最適化においてこれが有効になっている場合、その制約に完全に適合するデータに依存するような最適化は実行されません。 NOT TRUSTED は、参照整合性制約のみにしか指定できません (SQLSTATE 42613)。
- DROP PRIMARY KEY
- 主キーの定義、およびその主キーに従属するすべての参照制約をドロップします。 ニックネームには主キーがなければなりません。
- DROP FOREIGN KEY 制約名
- 制約名が constraint-name の参照制約をドロップします。 constraint-name には、 ニックネームに定義されている既存の参照制約を指定する必要があります。
- DROP UNIQUE 制約名
- ユニーク制約 constraint-name の定義、 およびこのユニーク制約に従属するすべての参照制約をドロップします。 constraint-name には、既存のユニーク制約を指定する必要があります。
- DROP CHECK 制約名
- 制約名が constraint-name のチェック制約をドロップします。 constraint-name には、 ニックネームに定義されている既存のチェック制約を指定する必要があります。
- DROP CONSTRAINT 制約名
- 制約名が constraint-name の制約をドロップします。 constraint-name には、ニックネームに定義されている既存のチェック制約、 参照制約、主キー、またはユニーク制約のいずれかを指定する必要があります。
- ALLOW CACHING または DISALLOW CACHING
- マテリアライズ照会表を定義する照会でニックネームを参照できるかどうか指定します。
これは、フェデレーテッド・サーバーでデータ・ソースからのデータをキャッシュに入れるために使用できます。
- ALLOW CACHING
- マテリアライズ照会表を定義する照会でニックネームを参照できることを指定します。これにより、フェデレーテッド・サーバーのマテリアライズ照会表で、データ・ソースからのデータをキャッシュに入れることができます。 マテリアライズ照会表に対して定義されるリフレッシュ可能オプションは、マテリアライズ照会表のキャッシュ・データを保守する方法を指定します。
- DISALLOW CACHING
- マテリアライズ照会表を定義する照会でニックネームを参照できないことを指定します。 DISALLOW CACHING は、マテリアライズ照会表の定義の全選択で参照されるニックネームに対して指定できません (SQLSTATE 42917)。
ルール
- ニックネームがビュー、SQL メソッド、または SQL 関数に使用されている場合、 またはそれらにインフォメーショナル制約が定義されている場合、 そのニックネーム内の列のローカル名やデータ・タイプを変更するために、 ALTER NICKNAME ステートメントを使用することはできません (SQLSTATE 42893)。 しかし、列オプション、ニックネーム・オプション、またはインフォメーショナル制約を追加、 設定、またはドロップするときには、このステートメントを使えます。
- ニックネームがマテリアライズ照会表定義によって参照されている場合、 ローカル名、データ・タイプ、列オプション、またはニックネーム・オプションを変更するために、 ALTER NICKNAME ステートメントを使用することはできません (SQLSTATE 42893)。 さらに、キャッシングを使用不可にするためにこのステートメントを使用することはできません (SQLSTATE 42917)。 しかし、インフォメーショナル制約を追加、変更、またはドロップするときには、このステートメントを使えます。
- 列オプションは、 同じ ALTER NICKNAME ステートメントに複数回指定することはできません (SQLSTATE 42853)。 列オプションを使用可能にする、リセットする、あるいはドロップする場合、 使用中の他の列オプションには影響はありません。
- リレーショナル・ニックネームの場合、特定の作業単位 (UOW) 内の ALTER NICKNAME ステートメントは、以下のいずれかの条件の下では処理できません (SQLSTATE 55007)。
- このステートメントで参照されているニックネームには、同じ UOW 内でオープンされているカーソルがある。
- このステートメントで参照されているニックネームに対して、 同じ UOW 内で既に INSERT、DELETE、または UPDATE ステートメントのいずれかが出されている。
- 非リレーショナル・ニックネームの場合、所定の作業単位 (UOW) 内の ALTER NICKNAME ステートメントは、以下の条件の下では処理できません (SQLSTATE 55007)。
- このステートメントで参照されているニックネームには、同じ UOW 内でオープンされているカーソルがある。
- このステートメントで参照されているニックネームは、 同じ UOW 内の SELECT ステートメントで既に参照されている。
- このステートメントで参照されているニックネームに対して、 同じ UOW 内で既に INSERT、DELETE、または UPDATE ステートメントのいずれかが出されている。
注
- ALTER NICKNAME ステートメントを使用して ニックネームの列のローカル名を変更する場合、 その列に対する照会ではその名前を新しい名前で参照する必要があります。
- 列のデータ・タイプのローカル仕様を変更すると、データベース・マネージャーは、 その列に関して収集されたすべての統計 (HIGH2KEY、LOW2KEY、など) を無効にします。
- キャッシング・オブジェクトおよび保護オブジェクト: データ・ソース・オブジェクトが保護されたニックネームには、DISALLOW CACHING を指定してください。 これにより、ニックネームが使用されるたび、照会の実行時に適切な許可 ID のデータがデータ・ソースから戻されるようになります。 これは、フェデレーテッド・サーバーのマテリアライズ照会表の定義でのニックネームの使用を制限することによって行えます。ニックネーム・データをキャッシュに入れるためにそれが使用されている可能性があります。
- フェデレーテッド・システムでは、BINARY と VARBINARY のタイプはサポートされていません。
例
- ニックネーム NICK1 は、 T1という Db2® for IBM® i 表を参照します。 また、COL1 はこの表の最初の列である C1 を示すローカル名です。 C1 のローカル名を COL1 から NEWCOL に変更します。
ALTER NICKNAME NICK1 ALTER COLUMN COL1 LOCAL NAME NEWCOL
- ニックネーム EMPLOYEE は、EMP という Db2 for z/OS® 表を参照します。 また、SALARY はこの表の列の 1 つである、EMP_SAL を示すローカル名です。 列のデータ・タイプ FLOAT は、ローカル・データ・タイプ DOUBLE にマップされます。 FLOAT が DECIMAL (10, 5) へマップされるように、マッピングを変更します。
ALTER NICKNAME EMPLOYEE ALTER COLUMN SALARY LOCAL TYPE DECIMAL(10,5)
- Oracle 表において、データ・タイプが VARCHAR の列には、末尾ブランクがないことを示します。 この表のニックネームは NICK2 で、この列のローカル名は COL1 です。
ALTER NICKNAME NICK2 ALTER COLUMN COL1 OPTIONS (ADD VARCHAR_NO_TRAILING_BLANKS 'Y')
- ニックネーム DRUGDATA1 の表構造化ファイル drugdata1.txt の
完全修飾パスを変更します。 FILE_PATH ニックネーム・オプションを使用して、
パスを現行値 '/user/pat/drugdata1.txt' から '/usr/kelly/data/drugdata1.txt' に変更します。
ALTER NICKNAME DRUGDATA1 OPTIONS (SET FILE_PATH '/usr/kelly/data/drugdata1.txt')