DROP ステートメント

DROP ステートメントは、オブジェクトを削除します。 そのオブジェクトに直接または間接的に従属するオブジェクトがある場合、 それらも削除されるか、または作動不能になります。 オブジェクトを削除すると、そのオブジェクトに関する記述がカタログから削除され、そのオブジェクトを参照するパッケージはすべて無効になります。

呼び出し

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

許可

2 つの部分からなる名前を持つことができるオブジェクトをドロップする場合は、ステートメントの許可 ID に、以下の権限が少なくとも 1 つ含まれている必要があります。
  • オブジェクトのスキーマに対する DROPIN 特権
  • オブジェクトのカタログ・ビューの OWNER 列に記録されている、オブジェクトの所有者
  • オブジェクトに対する CONTROL 特権 (索引、SPECIFICATION ONLY 指定の索引、ニックネーム、パッケージ、表、およびビューにのみ適用)
  • SYSCAT.DATATYPES カタログ・ビューの OWNER 列に記録されている、ユーザー定義タイプの所有者 (ユーザー定義タイプに関連したメソッドをドロップしている場合にのみ適用)
  • そのオブジェクトのスキーマに対する SCHEMAADM 権限
  • DBADM 権限

表またはビューの階層をドロップする場合、ステートメントの許可 ID が持つ特権に、 その階層内にあるそれぞれの表またはビューに対する上記の特権のいずれかが含まれている必要があります。

監査ポリシーをドロップする場合は、このステートメントの許可 ID が持つ特権には、SECADM 権限が含まれている必要があります。

バッファー・プール、データベース・パーティション・グループ、ストレージ・グループ、または表スペースをドロップする場合、ステートメントの許可 ID が持つ特権には、SYSADM 権限または SYSCTRL 権限が含まれている必要があります。

データ・タイプ・マッピング、関数マッピング、サーバー定義、またはラッパーをドロップする場合、ステートメントの許可 ID が持つ特権には、DBADM 権限が含まれている必要があります。

イベント・モニターをドロップする場合は、このステートメントの許可 ID が持つ特権には、SQLADM または DBADM 権限が含まれている必要があります。

ロールをドロップする場合は、このステートメントの許可 ID が持つ特権には、SECADM 権限が含まれている必要があります。

行権限または列マスクをドロップするときには、このステートメントの許可 ID が持つ特権には、SECADM 権限が含まれている必要があります。

スキーマをドロップする場合は、ステートメントの許可 ID が持つ特権には、DBADM 権限が含まれているか、特権が SYSCAT.SCHEMATA カタログ・ビューの OWNER 列に記録されているスキーマ所有者でなければなりません。

セキュリティー・ラベル、セキュリティー・ラベル・コンポーネント、またはセキュリティー・ポリシーをドロップする場合は、このステートメントの許可 ID が持つ特権には、SECADM 権限が含まれている必要があります。

サービス・クラス、ワーク・アクション・セット、ワーク・クラス・セット、ワークロード、しきい値、またはヒストグラム・テンプレートをドロップする場合、ステートメントの許可 ID が保持する特権には、WLMADM 権限または DBADM 権限が含まれている必要があります。

システム期間テンポラル表をドロップするときには、ステートメントの許可 ID の特権に、以下の権限の少なくとも 1 つが含まれている必要があります。
  • 関連する履歴表をドロップする特権
  • 管理権限

トランスフォームをドロップする場合、ステートメントの許可 ID が持つ特権には DBADM 権限が含まれているか、特権は type-name の所有者でなければなりません。

トラステッド・コンテキストをドロップする場合は、このステートメントの許可 ID が持つ特権には、SECADM 権限が含まれている必要があります。

イベント・モニターまたは使用リストをドロップする場合、このステートメントの許可 ID が持つ特権には、SQLADM または DBADM 権限が含まれている必要があります。

ユーザー・マッピングをドロップする場合、ステートメントの許可 ID がマッピング内にあるフェデレーテッド・データベースの許可名と異なる場合には、この許可 ID が持つ特権には、DBADM 権限が含まれている必要があります。 許可 ID と許可名が一致する場合は、特権または権限は必要ありません。

構文

Read syntax diagramSkip visual syntax diagramDROPalias-designatorAUDIT POLICYpolicy-nameBUFFERPOOLbufferpool-nameDATABASE PARTITION GROUPdb-partition-group-nameEVENT MONITORevent-monitor-namefunction-designatorRESTRICTFUNCTION MAPPINGfunction-mapping-nameHISTOGRAM TEMPLATEtemplate-nameINDEXindex-name1INDEX EXTENSIONindex-extension-nameRESTRICTMASKmask-namemethod-designatorRESTRICTMODULEmodule-nameNICKNAMEnicknamePACKAGEpackage-nameVERSIONversion-idPERMISSIONpermission-nameprocedure-designatorRESTRICTROLErole-nameSCHEMAschema-nameRESTRICTSECURITY LABELsecurity-label-nameRESTRICTSECURITY LABEL COMPONENTsec-label-comp-nameRESTRICTSECURITY POLICYsecurity-policy-nameRESTRICTSEQUENCEsequence-nameRESTRICTSERVERserver-nameservice-class-designatorRESTRICTSTOGROUPstoragegroup-nameRESTRICTTABLEIF EXISTStable-name2TABLE HIERARCHYroot-table-nameTABLESPACETABLESPACES,tablespace-nameTRANSFORMTRANSFORMSALLgroup-nameFORtype-nameTHRESHOLDthreshold-nameTRIGGERtrigger-nameTRUSTED CONTEXTcontext-nameTYPEtype-nameRESTRICTTYPE MAPPINGtype-mapping-nameUSAGE LISTusage-list-nameUSER MAPPING FORauthorization-nameUSERSERVERserver-nameVARIABLEvariable-nameRESTRICTVIEWview-nameVIEW HIERARCHYroot-view-nameWORK ACTION SETwork-action-set-nameWORK CLASS SETwork-class-set-nameWORKLOADworkload-nameWRAPPERwrapper-nameXSROBJECTxsrobject-name
alias-designator
Read syntax diagramSkip visual syntax diagram PUBLICALIASalias-name FOR TABLEFOR MODULEFOR SEQUENCE
function-designator
Read syntax diagramSkip visual syntax diagramFUNCTIONfunction-name(,data-type)SPECIFIC FUNCTIONspecific-name
method-designator
Read syntax diagramSkip visual syntax diagramMETHODmethod-name(,data-type)FORtype-nameSPECIFIC METHODspecific-name
procedure-designator
Read syntax diagramSkip visual syntax diagramPROCEDUREprocedure-name(,data-type)SPECIFIC PROCEDUREspecific-name
service-class-designator
Read syntax diagramSkip visual syntax diagramSERVICE CLASSservice-class-name UNDERservice-superclass-name
Notes:
  • 1 Index-name can be the name of either an index or an index specification.
  • 2 For compatibility with Netezza, you can change the order of IF EXISTS and table-name.

説明

別名指定子 (alias-designator)
別名 alias-name
ドロップする別名を指定します。 alias-name (別名) は、 カタログに記述されている別名を指定する名前でなければなりません (SQLSTATE 42704)。 指定した別名は削除されます。
FOR TABLE、FOR MODULE、または FOR SEQUENCE
別名のオブジェクト・タイプを指定します。
FOR TABLE
別名は、表、ビュー、またはニックネームに対するものです。
FOR MODULE
別名は、モジュールに対するものです。
FOR SEQUENCE
別名は、シーケンスに対するものです。

別名を参照するすべてのビューおよびトリガーは、作動不能になります。 これには、CREATE TRIGGER ステートメントの ON 節内の別名参照とトリガー SQL ステートメント内の別名参照の両方が含まれます。 別名を参照するマテリアライズ照会表またはステージング表は、すべてドロップされます。

PUBLIC を指定する場合、alias-name はパブリック別名を指定するものでなければならず (SQLSTATE 428EK)、その別名は現在のサーバーに存在するものでなければなりません (SQLSTATE 42704)。

別名が行権限または列マスクの定義で参照されている場合、その別名をドロップすることはできません (SQLSTATE 42893)。

監査ポリシー policy-name
ドロップする監査ポリシーを指定します。 policy-name は、現行のサーバーに存在する監査ポリシーを識別するものでなければなりません (SQLSTATE 42704)。 監査ポリシーは、何らかのデータベース・オブジェクトと関連付けられていてはなりません (SQLSTATE 42893)。 指定された監査ポリシーはカタログから削除されます。
BUFFERPOOL バッファー・プール名
ドロップするバッファー・プールを指定します。 bufferpool-name (バッファー・プール名) は、 カタログに記述されているバッファー・プールを指定していなければなりません (SQLSTATE 42704)。 そのバッファー・プールに表スペースが割り当てられていない場合もあります (SQLSTATE 42893)。 IBMDEFAULTBP バッファー・プールはドロップできません (SQLSTATE 42832)。 バッファー・プール・メモリーはすぐに解放されます。
データベース・パーティション・グループ db-partition-group-name
ドロップするデータベース・パーティション・グループを指定します。 db-partition-group-name パラメーターは、 カタログに記述されているデータベース・パーティション・グループを指定していなければなりません (SQLSTATE 42704)。 これは、1 部構成の名前です。

データベース・パーティション・グループをドロップすると、 データベース・パーティション・グループで定義されたすべての表スペースがドロップされます。 これらの表スペース内の表と従属関係があるすべての既存のデータベース・オブジェクト (パッケージや参照制約など) は、ドロップされるか無効になり (必要な場合)、従属するビューとトリガーは作動不能になります。

IBMCATGROUP、IBMDEFAULTGROUP、および IBMTEMPGROUP データベース・パーティション・グループはドロップできません (SQLSTATE 42832)。

現在データ再配分が行われているデータベース・パーティション・グループに対して DROP DATABASE PARTITION GROUP ステートメントを発行すると、 データベース・パーティション・グループのドロップ操作は失敗し、エラーが戻されます (SQLSTATE 55038)。 ただし、部分的に再配分されたデータベース・パーティション・グループはドロップできます。 データベース・パーティション・グループは、 REDISTRIBUTE DATABASE PARTITION GROUP コマンドが完了するまで実行されなかった場合は、 部分的に再配分の状態になります。 これは、エラーまたは FORCE APPLICATION ALL コマンドによって割り込まれた場合に起こる可能性があります。 (部分的に再配分されたデータベース・パーティション・グループの場合、SYSCAT.DBPARTITIONGROUPS カタログの REDISTRIBUTE_PMAP_ID は -1 ではありません。)

EVENT MONITOR イベント・モニター名
ドロップするイベント・モニターを指定します。 event-monitor-name (イベント・モニター名) は、 既にカタログに存在するイベント・モニターを指定していなければなりません (SQLSTATE 42704)。

指定したイベント・モニターがアクティブの場合は、エラーが戻されます (SQLSTATE 55034)。それ以外の場合は、イベント・モニターは削除されます。 ただし、SET EVENT MONITOR STATE ステートメントを使用してイベント・モニターをアクティブ化した状態で、データベースをいったん非アクティブ化してから再アクティブ化した場合は、DROP ステートメントを実行する前に、SET EVENT MONITOR STATE ステートメントを使用して、イベント・モニターを非アクティブ化してください。

ドロップする WRITE TO FILE イベント・モニターのターゲット・パスにイベント・ファイルが存在する場合、そのイベント・ファイルは削除されません。 ただし、それと同じターゲット・パスを指定した新しいイベント・モニターが作成されると、 それらのイベント・ファイルは削除されます。

WRITE TO TABLE イベント・モニターをドロップする場合、 表情報は SYSCAT.EVENTTABLES カタログ・ビューからドロップされますが、表そのものはドロップされません。

関数指定子 (function-designator)
ドロップするユーザー定義関数 (完全な関数または関数テンプレートのいずれか) のインスタンスを指定します。 詳しくは、 関数、メソッド、およびプロシージャーの指定子を参照してください。
指定する関数インスタンスは、 カタログに記述されたユーザー定義関数でなければなりません。 以下の関数はドロップできません。
  • CREATE TYPE ステートメントによって暗黙的に生成された関数 (SQLSTATE 42917)
  • SYSIBM、SYSFUN、SYSIBMADM、または SYSPROC スキーマの関数 (SQLSTATE 42832)
  • 行権限または列マスクの定義で参照されている関数 (SQLSTATE 42893)
  • 生成列式またはチェック制約で参照されている関数 (SQLSTATE 42893)
RESTRICT
RESTRICT キーワードを指定すると、以下のいずれかの従属関係が存在する場合は、 関数をドロップしないという規則が適用されます。
  • 別の関数がその関数に基づいている。
  • 別のルーチンがその関数を使用している。
  • ビューがその関数を使用している。
  • トリガーがその関数を使用している。
  • マテリアライズ照会表が、その定義で関数を使用している。
auto_reval データベース構成パラメーターが無効に設定されている場合、バージョン 9.5 と同じ依存関係に対してデフォルトで制限規則が適用されます。
この場合の考慮事項は、以下のとおりです。
  • 他のオブジェクトが関数に従属している場合があります。 これらの関数をドロップするには、このような従属オブジェクトをすべて除去しておく必要があります (作動不能としてマークされるパッケージは除く)。 従属オブジェクトを伴う関数をドロップしようとすると、エラー (SQLSTATE 42893) になります。 これらの従属関係のリストについては、『規則』セクションを参照してください。 関数がドロップ可能な場合、その関数がドロップされます。
  • ドロップする特定関数に従属するパッケージがある場合には、それは作動不能としてマークされます。 そのようなパッケージが暗黙のうちに再バインドされることはありません。 BIND コマンドまたは REBIND コマンドを使って再バインドするか、 PREP コマンドを使って再作成する必要があります。
FUNCTION MAPPING function-mapping-name
ドロップする関数マッピングを指定します。 function-mapping-name は、 カタログに記述されているユーザー定義関数マッピングを指定していなければなりません (SQLSTATE 42704)。 その関数マッピングはデータベースから削除されます。

デフォルトの関数マッピングは、ドロップできませんが、 CREATE FUNCTION MAPPING ステートメントを使用することによって、 使用不可にすることができます。 デフォルトの関数マッピングをオーバーライドするために作成されたユーザー定義の関数マッピングをドロップすると、 デフォルトの関数マッピングが復元されます。

ドロップされる関数マッピングに従属しているパッケージは、無効になります。

ヒストグラム・テンプレート template-name
ドロップ対象のヒストグラム・テンプレートを指定します。 template-name は、現行のサーバーに存在するヒストグラム・テンプレートを識別するものでなければなりません (SQLSTATE 42704)。 template-name に SYSDEFAULTHISTOGRAM を指定することはできません (SQLSTATE 42832)。 サービス・クラスまたは作業アクションがヒストグラム・テンプレートに依存している場合、そのヒストグラム・テンプレートをドロップすることはできません (SQLSTATE 42893) 指定されたヒストグラム・テンプレートはカタログから削除されます。
INDEX 指標名
ドロップする索引または SPECIFICATION ONLY 指定の索引を指定します。 index-name (索引名) は、 カタログに記述されている索引または SPECIFICATION ONLY 指定の索引を指定していなければなりません (SQLSTATE 42704)。 索引は、システムに必須の主キーまたはユニーク制約の索引であってはならず、複製されたマテリアライズ照会表または XML 列の索引であってもなりません (SQLSTATE 42917)。 指定した索引または SPECIFICATION ONLY 指定の索引は削除されます。

変更状態索引 (MOD 状態索引とも呼ばれる) は、システム索引として分類されていても、ドロップできます。 以前のフィックスパック・レベルへのロールバックを容易にするために、変更状態索引のドロップがサポートされています。 表の最後のユーザー索引をドロップするときに変更状態索引が存在している場合、その変更状態索引は暗黙的にドロップされます。

ドロップされる索引または SPECIFICATION ONLY 指定の索引に従属しているパッケージは、無効になります。

INDEX EXTENSION index-extension-name RESTRICT
ドロップする索引拡張を指定します。 index-extension-name (索引拡張名) は、 カタログに記述されている索引拡張を指定する名前でなければなりません (SQLSTATE 42704)。 RESTRICT キーワードは、 この索引拡張の定義に従って索引を定義できないという規則を課します (SQLSTATE 42893)。
MASK マスク名
ドロップする列マスクを指定します。 名前は、現行サーバーに存在する列マスクを識別するものでなければなりません (SQLSTATE 42704)。
メソッド指定子 (method-designator)
ドロップするメソッド本体を指定します。 詳しくは、 関数、メソッド、およびプロシージャーの指定子を参照してください。 指定するメソッドの本体は、カタログに記述されているメソッドでなければなりません (SQLSTATE 42704)。 CREATE TYPE ステートメントによって暗黙的に生成されたメソッド本体をドロップすることはできません。

DROP METHOD によって、メソッドの本体は削除されますが、 メソッドの指定 (シグニチャー) はサブジェクト・タイプの定義の一部として残されます。 メソッドの本体をドロップした後、 メソッドの指定は ALTER TYPE DROP METHOD を使用してサブジェクト・タイプの定義から削除することができます。

RESTRICT
RESTRICT キーワードを指定すると、以下のいずれかの従属関係が存在する場合は、 メソッドをドロップしないという規則が適用されます。
  • 関数がそのメソッドに基づいている。
  • 別のルーチンがそのメソッドを使用している。
  • ビューがそのメソッドを使用している。
  • トリガーがそのメソッドを使用している。
  • マテリアライズ照会表の定義でそのメソッドが使用されている。
auto_reval データベース構成パラメーターが無効に設定されている場合、バージョン 9.5 と同じ依存関係に対してデフォルトで制限規則が適用されます。
この場合の考慮事項は、以下のとおりです。
  • メソッドに他のオブジェクトが従属している場合があります。 そのような場合は、メソッドをドロップする前にそれらの従属関係をすべて除去する必要があります (ただし、 そのメソッドがドロップされると作動不能としてマークされるパッケージは例外です)。 そのような従属関係を持つメソッドをドロップしようとすると、エラーが戻されます (SQLSTATE 42893)。 ドロップできる状態にあれば、メソッドはドロップされます。
  • ドロップする特定のメソッドに従属しているパッケージは、 そのメソッドがドロップされると、作動不能としてマークされます。 そのようなパッケージが暗黙的に再バインドされることはありません。 これらのパッケージは、BIND コマンドまたは REBIND コマンドを使用して再バインドするか、 あるいは PREP コマンドを使用して再作成する必要があります。

ドロップされる特定のメソッドが別のメソッドをオーバーライドする場合、オーバーライドされるメソッド (および、ドロップされる特定のメソッドのスーパータイプでこのメソッドをオーバーライドするメソッド) に従属したパッケージはすべて無効になります。

MODULE モジュール名
ドロップするモジュールを指定します。 module-name は、現行サーバーに存在するモジュールを示していなければなりません (SQLSTATE 42704)。 指定する名前はモジュールの別名であってはなりません (SQLSTATE 560CT)。 指定されたモジュールは、すべてのモジュール・オブジェクトを含めて、スキーマからドロップされます。 モジュール上のすべての特権もドロップされます。

モジュールが行権限または列マスクの定義で参照されている場合、そのモジュールをドロップすることはできません (SQLSTATE 42893)。

NICKNAME ニックネーム
ドロップするニックネームを指定します。 ニックネームは、カタログにリストされていなければなりません (SQLSTATE 42704)。 そのニックネームはデータベースから削除されます。

ニックネームに関連した列および索引に関するすべての情報が、カタログから削除されます。 ニックネームに従属したマテリアライズ照会表はドロップされます。 ニックネームに従属した SPECIFICATION ONLY 指定の索引はドロップされます。 ニックネームに従属するビューは、作動不能としてマークされます。 ドロップされた SPECIFICATION ONLY 指定の索引または作動不能ビューに従属するパッケージはいずれも無効になります。 ニックネームが参照するデータ・ソース表は影響を受けません。

SQL 関数またはメソッドがニックネームに依存している場合、 そのニックネームはドロップできません (SQLSTATE 42893)。

PACKAGE パッケージ名
ドロップするパッケージを指定します。 パッケージ名は、カタログに記述されているパッケージを識別するものでなければなりません (SQLSTATE 42704)。 指定したパッケージが削除されます。 ドロップするパッケージが、package-name で指定された唯一のパッケージである場合 (つまり、 他のバージョンは存在しない場合)、そのパッケージに対する特権もすべて削除されます。
VERSION バージョン ID
ドロップするパッケージ・バージョンを指定します。 値が指定されない場合には、空ストリングがバージョンのデフォルトになります。 同じパッケージ名が付けられていてもバージョンは異なる、複数のパッケージが存在する場合、 DROP ステートメントを 1 回呼び出すときに、1 つのパッケージ・バージョンだけをドロップできます。 次のような場合は、バージョン ID を二重引用符で区切ってください。
  • バージョン ID が VERSION(AUTO) プリコンパイラー・オプションによって生成された場合
  • バージョン ID が数字で始まる場合
  • バージョン ID が小文字であったり、大/小文字混合である場合
ステートメントをオペレーティング・システムのコマンド・プロンプトから呼び出す場合は、 各二重引用符の区切り文字の前に円記号を置いて、 オペレーティング・システムによって区切り文字が外されないようにします。
PERMISSION 許可名
ドロップする行権限を指定します。 名前は、現行サーバーに存在する行権限を指定するものでなければなりません (SQLSTATE 42704)。 データベース・マネージャーによって暗黙的に作成されたデフォルトの行権限の名前を指定してはなりません (SQLSTATE 42917)。
プロシージャー指定子 (procedure-designator)
ドロップするプロシージャーのインスタンスを指定します。 詳しくは、 関数、メソッド、およびプロシージャーの指定子を参照してください。 指定するプロシージャー・インスタンスは、カタログに記述されたプロシージャーでなければなりません。 SYSIBM、SYSFUN、SYSIBMADM、または SYSPROC スキーマのプロシージャーはドロップできません (SQLSTATE 42832)。
RESTRICT
RESTRICT キーワードは、そのプロシージャーを指定する CALL がトリガー定義または SQL ルーチン定義に含まれている場合に、そのプロシージャーがドロップされないようにします。
以下の条件に合致した場合に、バージョン 9.5 の場合と同じ従属関係に対する制限規則がデフォルトで適用されます。
  • auto_reval データベース構成パラメーターが無効に設定されている。
  • そのプロシージャーを指定する CALL ステートメントが、インライン化トリガー定義、インライン化 SQL 関数定義、またはインライン化 SQL メソッド定義に含まれている。

SYSIBM、SYSFUN、または SYSPROC スキーマのプロシージャーはドロップできません (SQLSTATE 42832)。

ROLE ロール名
ドロップするロールを指定します。 role-name は、現行のサーバーに既に存在するロールを識別するものでなければなりません (SQLSTATE 42704)。 あるロールがルーチンに対する EXECUTE 特権またはシーケンスに対する USAGE 特権を持っていて、パッケージ以外の SQL オブジェクトがそのルーチンまたはシーケンスに依存している場合には、role-name はそのロール、または role-name を含むそのようなロールを識別するものであってはなりません (SQLSTATE 42893)。 SQL オブジェクトの所有者は、authorization-name であるか、authorization-name のメンバーである任意のユーザーのいずれかです (authorization-name はロール)。
ドロップ対象のロールが以下のいずれかの条件に該当する場合、DROP ROLE ステートメントは失敗します (SQLSTATE 42893)。
  • 接続属性 SESSION_USER ROLE のいずれか 1 つの値が role-name であるようなワークロードが存在する
  • role-name を使用するトラステッド・コンテキストが存在する

指定されたロールはカタログから削除されます。

SCHEMA schema-name RESTRICT
ドロップする特定のスキーマを指定します。 schema-name に指定するスキーマ名は、 カタログに記述されているスキーマを指定するものでなければなりません (SQLSTATE 42704)。
RESTRICT
RESTRICT キーワードは、 データベースから削除するスキーマとして指定したスキーマにオブジェクトを定義できないという規則を課します (SQLSTATE 42893)。
SECURITY LABEL セキュリティー・ラベル名
ドロップするセキュリティー・ラベルを指定します。 名前は、セキュリティー・ポリシーで修飾する必要があり (SQLSTATE 42704)、現在のサーバー上に存在するセキュリティー・ラベルを識別していなければなりません (SQLSTATE 42704)。
RESTRICT
このオプションはデフォルトであり、以下のいずれかの従属関係が存在する場合に、セキュリティー・ラベルがドロップされないようにします (SQLSTATE 42893)
  • 1 つ以上の許可 ID が読み取りアクセス用のセキュリティー・ラベルを現在保持している場合
  • 1 つ以上の許可 ID が書き込みアクセス用のセキュリティー・ラベルを現在保持している場合
  • 1 つ以上の列を保護するためにセキュリティー・ラベルが現在使用中になっている場合
セキュリティー・ラベル・コンポーネント sec-label-comp-name
ドロップするセキュリティー・ラベル・コンポーネントを指定します。 sec-label-comp-name は、カタログに記述されているセキュリティー・ラベル・コンポーネントを識別するものでなければなりません (SQLSTATE 42704)。
RESTRICT
このオプションはデフォルトであり、以下のいずれかの従属関係が存在する場合に、セキュリティー・ラベル・コンポーネントがドロップされないようにします (SQLSTATE 42893)
  • セキュリティー・ラベル・コンポーネントを含んだセキュリティー・ポリシーが現在 1 つ以上定義されている場合
セキュリティー・ポリシー security-policy-name
ドロップするセキュリティー・ポリシーを指定します。 security-policy-name は、現在のサーバー上に存在するセキュリティー・ポリシーを識別するものでなければなりません (SQLSTATE 42704)。
RESTRICT
このオプションはデフォルトであり、以下のいずれかの従属関係が存在する場合に、セキュリティー・ポリシーがドロップされないようにします (SQLSTATE 42893)
  • 1 つ以上の表がこのセキュリティー・ポリシーに関連付けられている場合
  • 1 つ以上の許可 ID が、このセキュリティー・ポリシー内のいずれかの規則に関する免除を保持している場合
  • このセキュリティー・ポリシーに関して 1 つ以上のセキュリティー・ラベルが定義されている場合
SEQUENCE シーケンス名
ドロップする特定のシーケンスを識別します。 暗黙的または明示的スキーマ名を含む sequence-name は、 現在のサーバーに存在するシーケンスを固有に識別していなければなりません。 この名前によるシーケンスが、明示的または暗黙的に指定されたスキーマに存在しない場合、 エラーが戻されます (SQLSTATE 42704)。
RESTRICT
RESTRICT キーワードは、以下のいずれかの従属関係が存在する場合に、シーケンスがドロップされないようにします。
  • トリガー本体内の NEXT VALUE または PREVIOUS VALUE 式がそのシーケンスを指定しているトリガーが存在する (SQLSTATE 42893)。
  • ルーチン本体内の NEXT VALUE 式がそのシーケンスを指定している SQL ルーチンが存在する (SQLSTATE 42893)。
以下の条件に合致した場合に、バージョン 9.5 の場合と同じ従属関係に対する制限規則がデフォルトで適用されます。
  • auto_reval データベース構成パラメーターが無効に設定されている。
  • インライン化トリガー定義、インライン化 SQL 関数定義、またはインライン化 SQL メソッド定義が、そのシーケンスを参照している。
サーバー server-name
カタログから定義をドロップするデータ・ソースを指定します。 server-name に指定するサーバー名は、 カタログに記述されているデータ・ソースを識別するものでなければなりません (SQLSTATE 42704)。 そのデータ・ソースの定義は削除されます。

データ・ソースに常駐する表およびビューのニックネームはすべてドロップされます。 また、これらのニックネームに従属する SPECIFICATION ONLY 指定の索引もすべてドロップされます。 ドロップされたサーバー定義に従属するユーザー定義関数マッピング、 ユーザー定義タイプ・マッピング、およびユーザー・マッピングもすべてドロップされます。 ドロップされたサーバー定義、関数マッピング、ニックネーム、 および SPECIFICATION ONLY 指定の索引に依存するパッケージはすべて無効になります。 サーバー定義に依存するすべてのフェデレーテッド・プロシージャーもドロップされます。

サービス・クラス指定子
SERVICE CLASS サービス・クラス名
ドロップするサービス・クラスを識別します。 service-class-name は、カタログに記述されているサービス・クラスを識別するものでなければなりません (SQLSTATE 42704)。 サービス・サブクラスをドロップするには、UNDER 節を使って service-superclass-name を指定する必要があります。
UNDER サービス・スーパークラス名
サービス・サブクラスをドロップする場合に、そのサービス・スーパークラスを指定します。 service-superclass-name は、カタログに記述されているサービス・スーパークラスを識別するものでなければなりません (SQLSTATE 42704)。
RESTRICT
このキーワードを指定すると、以下のいずれかの従属関係が存在する場合にサービス・クラスをドロップしないという規則が適用されます。
  • サービス・クラスがサービス・サブクラスであり、このサービス・クラスに対する作業アクションのマッピングが存在する場合 (SQLSTATE 5U031)。 まず、作業アクションをドロップする必要があります。
  • サービス・クラスは、しきい値内にある REMAP ACTIVITY アクションのターゲットです (SQLSTATE 5U031)。 しきい値を変更して、別のサービス・サブクラスを REMAP ACTIVITY アクションのターゲットとして設定するようにするか、しきい値をドロップします。
  • サービス・クラスは使用不可になりません (SQLSTATE 5U031)。 まず、サービス・クラスを使用不可にする必要があります。
RESTRICT は、デフォルトの動作です。
STOGROUP ストレージ・グループ名

ドロップされるストレージ・グループを指定します。storagegroup-name には、現行のサーバー上の既存のストレージ・グループを指定する必要があります (SQLSTATE 42704)。 これは、1 部構成の名前です。

RESTRICT
RESTRICT キーワードは、このストレージ・グループを使用する表スペースが存在する場合、そのストレージ・グループがドロップされないようにします (SQLSTATE 42893)。 RESTRICT は、デフォルトの動作です。

現行のデフォルト・ストレージ・グループはドロップできません (SQLSTATE 42893)。 新しいデフォルトは、ALTER STOGROUP ステートメントを使用して指定できます。

DROP STOGROUP ステートメントは、データベース・パーティション・サーバーの追加中には実行できません (SQLSTATE 55071)。

TABLE テーブル名

ドロップする基本表、作成済み一時表、 または宣言済み一時表を指定します。 テーブル名 は、カタログに記述されている表を識別するものでなければなりません。また、宣言済み一時表の場合は、アプリケーションに テーブル名 存在していなければなりません SESSION というスキーマ名で修飾され、 (SQLSTATE 42704)。 型付き表の副表は、それぞれスーパー表に従属しています。 したがって、スーパー表をドロップする前には、副表をすべてドロップする必要があります (SQLSTATE 42893)。 table-name に、カタログ表を指定することはできません (SQLSTATE 42832)。また、システム期間テンポラル表に関連付けられた履歴表を指定することもできません (SQLSTATE 42893)。 指定された表はデータベースから削除されます。

その表で定義されたすべての索引、主キー、外部キー、行権限 (デフォルトの行権限を含む)、列マスク、チェック制約、マテリアライズ照会表、およびステージング表はドロップされます。 その表を参照するすべてのビューおよびトリガーが作動不能になります。これには、CREATE TRIGGER ステートメントの ON 節で参照される表、 およびトリガー SQL ステートメントで参照されるすべての表の両方とも対象となります。 ドロップされたオブジェクトまたは作動不能としてマークされたオブジェクトに従属するすべてのパッケージは無効になります。 これには、副表よりも上位の階層であるスーパー表に従属するパッケージが含まれます。 ドロップされた表を参照の有効範囲として定義していた参照列は、参照範囲が無効になります。

宣言済み一時表にパッケージが従属することはありません。 したがって、宣言済み一時表がドロップされてもパッケージが無効になることはありません。 ただし、パッケージは作成済み一時表に従属します。そして、作成済み一時表がドロップされるとパッケージは無効になります。

フェデレーテッド・システムでは、透過性 DDL を使用して作成されたリモート表は ドロップできます。 リモート表をドロップすると、その表に関連したニックネームもドロップされ、そのニックネームに従属するすべてのパッケージが無効化されます。

表階層から副表をドロップすると、その副表に関連した列はアクセスできなくなります (ただし、 列の数や行のサイズの制限に関しては考慮されます)。 副表をドロップすると、スーパー表から副表の行がすべて削除されてしまいます。 その結果、スーパー表に定義したトリガーや参照整合性制約がアクティブ化することがあります。

作成済み一時表または宣言済み一時表が、現在の作業単位またはセーブポイントがアクティブになる前に作成されたものである場合は、その一時表をドロップすると機能上で表がドロップされてしまうため、アプリケーションからその一時表にアクセスすることができなくなります。 しかし、表スペースでは、作業単位がコミットされるまで、あるいはセーブポイントが終了するまで、 依然としてこの表が予約された状態にあるため、USER TEMPORARY 表スペースをドロップしたり、 USER TEMPORARY 表スペースのデータベース・パーティション・グループを再配分することはできません。 作成済み一時表または宣言済み一時表がドロップされると、DROP がコミットされたかロールバックされたかにかかわらず、 表に含まれていたデータはすべて破棄されます。

table-name がシステム期間テンポラル表である場合、それに関連付けられたすべての履歴表とその履歴表に対して定義されたすべての索引もドロップされます。 システム期間テンポラル表をドロップする場合、特権セットに、履歴表をドロップするために必要な許可も含まれている必要があります (SQLSTATE 42501)。

システム期間テンポラル表に関連付けられた履歴表は、DROP ステートメントで明示的にドロップすることはできません (SQLSTATE 42893)。 履歴表は、それに関連付けられたシステム期間テンポラル表がドロップされるとき、暗黙的にドロップされます。

表に RESTRICT ON DROP 属性があると、その表はドロップできません。

新しくデタッチされた表は、初期状態ではアクセス不能になります。 したがって、SET INTEGRITY ステートメントを実行して、MQT の増分リフレッシュを行うか、外部キー制約の処理を完了するまで、表の読み取り、変更、ドロップは不可能になります。 すべての従属表に対して SET INTEGRITY ステートメントを実行すると、その表は完全にアクセス可能になり、そのデタッチされた属性はリセットされ、ドロップできる状態になります。

表がドロップされるとき、行権限 (デフォルトの行権限を含む) およびその表に作成された列マスクもすべてドロップされます。

表が行権限または列マスクの定義で参照されている場合、その表をドロップすることはできません (SQLSTATE 42893)。

IF EXISTS
指定した表名が現在のデータベースおよびスキーマに存在しなくてもエラー・メッセージを表示しないことを指定します。
ドロップ操作を妨げている他の状況または依存関係がある場合を除き、表がドロップされなくても成功メッセージが戻されます。 表が存在しない場合、ドロップに失敗したという状況は無視されます。
表階層 root-table-name
ドロップする型付き表階層を指定します。 root-table-name で指定する型付き表は、 型付き表階層のルート表でなければなりません (SQLSTATE 428DR)。 root-table-name で指定する型付き表とその表のすべての副表が、 データベースから削除されます。

ドロップされた表を参照するすべての索引、マテリアライズ照会表、ステージング表、 主キー、外部キー、およびチェック制約はドロップされます。 ドロップされた表を参照するすべてのビューおよびトリガーは、作動不能になります。 ドロップされたオブジェクトまたは作動不能としてマークされたオブジェクトに従属するすべてのパッケージは無効になります。 参照列の中で、ドロップされた表を参照の有効範囲として定義したものがあれば、参照範囲は無効になります。

単一の副表をドロップする場合とは違い、表階層をドロップしても、 階層内にある任意の表の削除トリガーがアクティブ化したり、 削除された行が記録されたりすることはありません。

TABLESPACE または TABLESPACES tablespace-name
ドロップする表スペースを指定します。tablespace-name (表スペース名) は、カタログに記述されている表スペースを指定していなければなりません (SQLSTATE 42704)。 これは、1 部構成の名前です。 tablespace-name には、履歴表が含まれる表スペースを指定できません。ただし、それが関連付けられたシステム期間テンポラル表もドロップされる場合はこの限りではありません (SQLSTATE 42893)。

表の一部がドロップされる表スペースに保管され、 1 つかそれ以上の部分がドロップされない別の表スペースに保管されている場合、 この表スペースはドロップされません (このような表は前もってドロップする必要があります)。また、 その表スペースに存在する表に RESTRICT ON DROP 属性がある場合も、この表スペースはドロップされません (SQLSTATE 55024)。

オブジェクト名に「SYS」という接頭部が付いている場合、そのオブジェクトは組み込みオブジェクトであり、削除できません (ただし、SYSTOOLSPACE 表スペースと SYSTOOLSTMPSPACE 表スペースは例外です) (SQLSTATE 42832)。

データベースに TEMPORARY 表スペースが 1 つしか存在しない場合は、 SYSTEM TEMPORARY 表スペースをドロップすることはできません (SQLSTATE 55026)。 作成済み一時表または宣言済み一時表のインスタンスが作成されている USER TEMPORARY 表スペースはドロップできません (SQLSTATE 55039)。 USER TEMPORARY 表スペースでは、作成済み一時表がドロップされても、作成済み一時表のすべてのインスタンスがドロップされるまでは、その表スペースは使用中と見なされます。 セッションが終了するか、または作成済み一時表がセッションで参照されると、作成済み一時表のインスタンスはドロップされます。 USER TEMPORARY 表スペースでは、宣言済み一時表がドロップされても、 DROP TABLE ステートメントを含む作業単位がコミットされるまでは、その表スペースは使用中と見なされます。

表スペースをドロップすると、その表スペースに定義されているオブジェクトはすべてドロップされます。 パッケージや参照制約などのその表スペースに従属する既存のすべてのデータベース・オブジェクトはドロップされるか、 または無効になり、従属しているビューやトリガーは作動不能になります。

ユーザーによって作成されたコンテナーは削除されません。 CREATE TABLESPACE の実行時にデータベース・マネージャーによって作成されたコンテナー名のパスに含まれているディレクトリーは、いずれも削除されます。 データベース・ディレクトリーの下にあるすべてのコンテナーは削除されます。 DROP TABLESPACE ステートメントがコミットされると、可能なら、 指定された表スペースの DMS ファイル・コンテナーや SMS コンテナーが削除されます。 コンテナーが削除できない場合 (例えば、 別のエージェントによってオープンされたままになっている場合など) は、 ファイルが長さ 0 に切り捨てられます。 これらの長さ 0 のファイルは、 すべての接続が終了するか、DEACTIVATE DATABASE コマンドが発行されたときに削除されます。

THRESHOLD しきい値名
ドロップするしきい値を指定します。 threshold-name は現行のサーバーに存在するしきい値を識別するものでなければなりません (SQLSTATE 42704)。 これは、1 部構成の名前です。 キューで使用されるしきい値 (例えば TOTALSCPARTITIONCONNECTIONS や CONCURRENTDBCOORDACTIVITIES) をドロップするには、その前にまず使用不可にする必要があります (SQLSTATE 5U025)。 指定されたしきい値はカタログから削除されます。
TRIGGER トリガー名
ドロップするトリガーを指定します。 trigger-name (トリガー名) は、 カタログに記述されているトリガーを指定していなければなりません (SQLSTATE 42704)。 指定したトリガーは削除されます。

トリガーをドロップすると、特定のパッケージが無効としてマークされます。

trigger-name がビューに対して INSTEAD OF トリガーを指定する場合、 そのビューに対する更新を行うことにより、他のトリガーはそのトリガーに従属できます。

TRANSFORM ALL FOR type-name
ユーザー定義データ・タイプ type-name に定義されたすべてのトランスフォーム・グループがドロップされることを示します。 これらのグループで参照されるトランスフォーム関数はドロップされません。 動的 SQL ステートメントでは、CURRENT SCHEMA 特殊レジスターが、 修飾子のないオブジェクト名の修飾子として使用されます。 静的 SQL ステートメントでは、QUALIFIER プリコンパイル/BIND オプションによって、 修飾子のないオブジェクト名の修飾子が暗黙指定されます。 type-name に指定されるタイプ名は、 カタログに記述されているユーザー定義タイプを識別するものでなければなりません (SQLSTATE 42704)。

type-name に定義されているトランスフォームが存在しない場合は、エラーが戻されます (SQLSTATE 42740)。

DROP TRANSFORM は、CREATE TRANSFORM の逆の処理を行います。 DROP TRANSFORM は、指定されたデータ・タイプで特定のグループに関連付けられたトランスフォーム関数を未定義の状態にします。 これらのグループに関連付けられていた関数は引き続き存在しており、 明示的に呼び出すことができますが、 これらの関数にはもはやトランスフォーム・プロパティーは含まれていないので、 ホスト言語環境で値を交換するためにこれらの関数が暗黙的に呼び出されることはありません。

トランスフォーム・グループの中に SQL 以外の言語で書かれたユーザー定義関数 (またはメソッド) があり、 その関数が、ユーザー定義タイプ type-name に定義されたそのグループのトランスフォーム関数のいずれかに従属している場合、 そのトランスフォーム・グループはドロップされません (SQLSTATE 42893)。 このようなユーザー定義関数が従属しているトランスフォーム関数は、 type-name で定義された参照先のトランスフォーム・グループに関連付けられています。 そのため、パッケージが属しているトランスフォーム関数が、指定されたトランスフォーム・グループと関連付けられていると、 そのパッケージは作動不能としてマークされてしまいます。

TRANSFORM group-name FOR type-name
ユーザーが定義したデータ・タイプ type-name から、 指定したトランスフォーム・グループがドロップされることを示します。 このグループで参照されるトランスフォーム関数はドロップされません。 動的 SQL ステートメントでは、CURRENT SCHEMA 特殊レジスターが、 修飾子のないオブジェクト名の修飾子として使用されます。 静的 SQL ステートメントでは、QUALIFIER プリコンパイル/BIND オプションによって、 修飾子のないオブジェクト名の修飾子が暗黙指定されます。 type-name に指定されるタイプ名は、 カタログに記述されているユーザー定義タイプを識別するものでなければなりません (SQLSTATE 42704)。 また、group-name には、 type-name に存在しているトランスフォーム・グループを指定しなければなりません。
TRIGGER トリガー名
ドロップするトリガーを指定します。 trigger-name (トリガー名) は、 カタログに記述されているトリガーを指定していなければなりません (SQLSTATE 42704)。 指定したトリガーは削除されます。

トリガーをドロップすると、特定のパッケージが無効としてマークされます。

trigger-name がビューに対して INSTEAD OF トリガーを指定する場合、 そのビューに対する更新を行うことにより、他のトリガーはそのトリガーに従属できます。

トラステッド・コンテキスト context-name
ドロップするトラステッド・コンテキストを指定します。 context-name は現行のサーバーに存在するトラステッド・コンテキストを識別するものでなければなりません (SQLSTATE 42704)。 トラステッド・コンテキストのトラステッド接続がアクティブである間にこのコンテキストがドロップされた場合、接続が終了するか、次の再使用が試行されるまで、これらの接続はトラステッド状態のままになります。 これらのトラステッド接続でのユーザー切り替えが試行された場合、エラーが戻されます (SQLSTATE 42517)。 指定されたトラステッド・コンテキストはカタログから削除されます。
TYPE タイプ名
ドロップするユーザー定義タイプを指定します。 動的 SQL ステートメントでは、CURRENT SCHEMA 特殊レジスターが、 修飾子のないオブジェクト名の修飾子として使用されます。 静的 SQL ステートメントでは、QUALIFIER プリコンパイル/BIND オプションにより、 修飾子のないオブジェクト名の修飾子が暗黙指定されます。 構造化タイプでは、関連した参照タイプもドロップされます。 type-name (タイプ名) は、 カタログに記述されているユーザー定義タイプを指定していなければなりません。
RESTRICT
以下の条件の場合、このタイプはドロップされません (SQLSTATE 42893)。
  • 表またはビューの列のタイプとして使用されるタイプである。
  • サブタイプが含まれている。
  • 型付き表または型付きビューのデータ・タイプとして使用されている構造化タイプである。
  • 他の構造化タイプの属性として使用されるタイプである。
  • 表の列のタイプに type-name のインスタンスが含まれている可能性がある。 これには、列のタイプが type-name である場合や、列に関連付けられたタイプ階層以外のロケーションで type-name が使用される場合などがあります。 もっと典型的な例としては、どのタイプ (T) であれ、 表の列のタイプで type-name が直接または間接的に使用されている場合には、 T をドロップすることはできません。
  • タイプが、表またはビューの参照タイプ列のターゲット・タイプ、 または別の構造化タイプの参照タイプ属性である。
  • このタイプ、あるいはこのタイプを参照する値が、 関数やメソッドのパラメーター・タイプまたは戻り値タイプである。
  • タイプがパラメーター・タイプであるか、SQL プロシージャーの本体で使用されている。
  • このタイプ、またはこのタイプを参照する値が SQL 関数やメソッドの本体で使用されているが、 パラメーター・タイプや戻り値タイプではない。
  • このタイプがチェック制約、トリガー、ビュー定義、または索引の拡張で使用されている。

RESTRICT が指定されていない場合の振る舞いは、 そのタイプを使用する関数およびメソッドの場合を除いて RESTRICT の振る舞いと同じです。

auto_reval データベース構成パラメーターが無効に設定されている場合は、バージョン 9.5 の場合と同じ従属関係に対する制限規則がデフォルトで適用されます。

ドロップされるタイプを使用する関数の場合、ユーザー定義タイプがドロップ可能であると、 ドロップするそのタイプ (またはドロップするタイプを参照するもの) の パラメーターまたは戻り値が含まれているすべての関数 (F) (特定名は SF) に、 以下の DROP FUNCTION ステートメントが実行されることになります。
   DROP SPECIFIC FUNCTION SF

このステートメントがカスケードして、従属する関数もドロップされる可能性があります。 ユーザー定義タイプへの従属関係に基づいて、それらの関数もすべてドロップ・リストに含まれている場合には、 ユーザー定義タイプのドロップは正常に処理されます (そうでない場合、SQLSTATE 42893 のエラーになります)。

ドロップされるタイプを使用するメソッドの場合、ユーザー定義タイプがドロップ可能であると、 ドロップするそのタイプ (またはドロップするタイプを参照するもの) の パラメーターまたは戻り値が含まれているタイプ T1 のメソッド (M) (特定名は SM) に、 以下のステートメントが実行されることになります。
   DROP SPECIFIC METHOD SM
   ALTER TYPE T1 DROP SPECIFIC METHOD SM
これらのメソッドに従属しているオブジェクトがあると、DROP TYPE 操作が失敗する場合があります。

ドロップするタイプのスーパータイプで定義されるメソッドに従属し、 オーバーライドに適したパッケージはすべて、無効になります。

タイプが行権限または列マスクの定義で参照されている場合、そのタイプをドロップすることはできません (SQLSTATE 42893)。

TYPE MAPPING タイプ・マッピング名
ドロップするユーザー定義のデータ・タイプ・マッピングを指定します。 type-mapping-name (タイプ・マッピング名) は、 カタログに記述されているデータ・タイプ・マッピングを指定していなければなりません (SQLSTATE 42704)。 指定したデータ・タイプ・マッピングがデータベースから削除されます。

その他にドロップされるオブジェクトはありません。

USAGE LIST 使用法リスト名
ドロップする使用リストを指定します。 usage-list-name (暗黙または明示の修飾子を含む) は、カタログに記述されている使用量リストを指定していなければなりません (SQLSTATE 42704)。 使用リストに割り振られたメモリーが解放され、トランザクション制御の下から外れます。
許可名 | ユーザー・サーバー server-name のユーザー・マッピング
ドロップするユーザー・マッピングを指定します。 このマッピングは、フェデレーテッド・データベースにアクセスするために使う許可名を、 データ・ソースにアクセスするために使う許可名に関連付けます。 これら 2 つのうち最初の許可名は、authorization-name で指定されるか、 または特殊レジスター USER によって参照されます。 server-name は、 アクセスするのに 2 番目の許可名を使用するデータ・ソースを指定します。

authorization-name は、 カタログにリストされていなければなりません (SQLSTATE 42704)。 server-name に指定するサーバー名は、 カタログに記述されているデータ・ソースを識別するものでなければなりません (SQLSTATE 42704)。 ユーザー・マッピングが削除されます。

その他にドロップされるオブジェクトはありません。

VARIABLE 変数名
ドロップするグローバル変数を指定します。 variable-name は、現在のサーバーに存在するグローバル変数を指定するものでなければなりません (SQLSTATE 42704)。

変数が行権限または列マスクの定義で参照されている場合、その変数をドロップすることはできません (SQLSTATE 42893)。

RESTRICT
RESTRICT キーワードは、SQL ルーチン定義、トリガー定義、またはビュー定義で参照されているグローバル変数がドロップされないようにします (SQLSTATE 42893)。
以下の条件に合致した場合に、バージョン 9.5 の場合と同じ従属関係に対する制限規則がデフォルトで適用されます。
  • auto_reval データベース構成パラメーターが無効に設定されている。
  • インライン化トリガー定義、インライン化 SQL 関数定義、インライン化 SQL メソッド定義、またはビューが、その変数を参照している。
VIEW ビュー名
ドロップするビューを指定します。 view-name (ビュー名) は、 カタログに記述されているビューを指定していなければなりません (SQLSTATE 42704)。 型付きビューのサブビューは、それぞれスーパービューに従属しています。 したがって、スーパービューをドロップする前に、 サブビューをすべてドロップする必要があります (SQLSTATE 42893)。

指定したビューは削除されます。 直接的または間接的にそのビューに従属するビューまたはトリガーの定義は、作動不能としてマークされます。 作動不能というマークが付いたビューに従属するマテリアライズ照会表またはステージング表はすべてドロップされます。 ドロップされたビューまたは作動不能としてマークされたビューに従属するパッケージはいずれも無効になります。 これには、サブビューよりも上位の階層であるスーパービューに従属するパッケージが含まれます。 参照列の中で、ドロップされたビューを参照の有効範囲として定義したものがあれば、参照範囲は無効になります。

ビューが行権限または列マスクの定義で参照されている場合、そのビューをドロップすることはできません (SQLSTATE 42893)。

VIEW HIERARCHY ルート・ビュー名
ドロップする型付きビュー階層を指定します。 root-view-name で指定する型付きビューは、 型付きビュー階層のルート・ビューでなければなりません (SQLSTATE 428DR)。 root-view-name で指定する型付きビューとそのビューのすべてのサブビューが、 データベースから削除されます。

ドロップされたビューに、直接的または間接的に従属するビューまたはトリガーの定義は、作動不能としてマークされます。 ドロップされたビューやトリガー、 または作動不能としてマークされたビューやトリガーに従属するパッケージはいずれも、無効になります。 参照列の中で、ドロップされたビューや作動不能とマークされたビューを参照の有効範囲として定義したものがあれば、 参照範囲は無効になります。

WORK ACTION SET ワーク・アクション・セット名
ドロップする作業アクション・セットを指定します。 work-action-set-name には、現行のサーバー上の既存の作業アクション・セットを指定する必要があります (SQLSTATE 42704)。 work-action-set-name に含まれるすべての作業アクションもまた、ドロップされます。
WORK CLASS SET ワーク・クラス・セット名
ドロップする作業クラス・セットを指定します。 work-class-set-name には、現行のサーバー上に既に存在する作業クラス・セット名を指定する必要があります (SQLSTATE 42704)。 work-class-set-name に含まれるすべての作業クラスもまた、ドロップされます。
WORKLOAD ワークロード名
ドロップするワークロードを指定します。 これは、1 部構成の名前です。 workload-name には、現行のサーバー上の既存のワークロードを指定する必要があります (SQLSTATE 42704)。 SYSDEFAULTUSERWORKLOAD または SYSDEFAULTADMWORKLOAD はドロップできません (SQLSTATE 42832)。 ワークロードをドロップする前に、そのワークロードをまず使用不可にして、それに関連したアクティブ・ワークロードが発生していないことを確認する必要があります (SQLSTATE 5U023)。 関連付けられたしきい値があるワークロードをドロップする場合 (SQLSTATE 5U031)、しきい値を最初にドロップする必要があります。 指定されたワークロードはカタログから削除されます。
WRAPPER ラッパー名
ドロップするラッパーを指定します。 wrapper-name (ラッパー名) は、 カタログに記述されているラッパーを指定していなければなりません (SQLSTATE 42704)。 そのラッパーは削除されます。

そのラッパーに従属するすべてのサーバー定義、ユーザー定義関数マッピング、 およびユーザー定義データ・タイプ・マッピングはドロップされます。 さらに、ドロップされたサーバー定義に従属するユーザー定義関数マッピング、ニックネーム、ユーザー定義データ・タイプ・マッピング、およびユーザー・マッピングもすべてドロップされます。 ドロップされたニックネームに従属する SPECIFICATION ONLY 指定の索引はすべてドロップされ、 こうしたニックネームに従属するビューはすべて、作動不能としてマークが付けられます。 ドロップされたオブジェクトと作動不能ビューに従属するすべてのパッケージは、無効になります。 ドロップされたサーバー定義に依存するフェデレーテッド・プロシージャーも、すべてドロップされます。

XSROBJECT xsrobject-name
ドロップする XSR オブジェクトを指定します。 xsrobject-name は、カタログに記述されている XSR オブジェクトを指定するものでなければなりません (SQLSTATE 42704)。

XSR オブジェクトを参照するチェック制約はドロップされます。 XSR オブジェクトを参照するすべてのトリガーおよびビューは、作動不能とマークされます。 ドロップされた XSR オブジェクトに依存しているパッケージは、無効になります。

パーティション・データベース環境の場合、いずれかのパーティションに接続して、XSR オブジェクトに対してこのステートメントを発行できます。

ルール

依存関係: 表 1 は、オブジェクトが相互に持つ依存関係を示しています。 カタログには明示的に記録されない従属関係があります。 例えば、パッケージが従属している制約の記録はありません。 このリストには、以下の 4 つの異なるタイプの従属関係が示されています。
R
制限 (Restrict) を意味します。 従属オブジェクトが存在する限り、その基礎となるオブジェクトはドロップできません。
C
カスケード (Cascade) を意味します。 基礎となるオブジェクトをドロップすると、その従属オブジェクトも同時にドロップされます。 ただし、その従属オブジェクトにさらに他のオブジェクトに対する制限 (R) 従属関係があり、 それによってその従属オブジェクトをドロップできない場合には、 基礎となるオブジェクトのドロップは失敗します。
X
作動不能 (Inoperative) を意味します。 基礎となるオブジェクトをドロップすると、その従属オブジェクトは作動不能になります。 ユーザーが何らかの明示的な処置を取るまで、それは作動不能のままになります。
A
自動無効化および再有効化 (Automatic Invalidation and Revalidation) を意味します。 基礎となるオブジェクトをドロップすると、従属オブジェクトは無効になります。 データベース・マネージャーは、無効になったオブジェクトを再度有効にしようとします。

関数またはメソッドによって使用されるか、 関数またはメソッドによって直接あるいは間接に呼び出されるプロシージャーによって使用されるパッケージは、 ルーチンが MODIFIES SQL DATA として定義される場合にのみ、自動的に再度有効にされます。 ルーチンが MODIFIES SQL DATA でなければ、エラーが戻されます (SQLSTATE 56098)。

通常、データベース・マネージャーは無効になったオブジェクトの次回使用時に、このオブジェクト再有効化を試行します。 ただし、auto_reval が IMMEDIATE に設定された状態では、影響を受ける従属オブジェクトは無効になった直後に再度有効化されます。 これらの状態は、以下のとおりです。
  • テーブルの変更... ALTER COLUMN
  • テーブルの変更... DROP COLUMN
  • テーブルの変更... RENAME COLUMN
  • ALTER TYPE ... ADD ATTRIBUTE
  • ALTER TYPE ... DROP ATTRIBUTE
  • OR REPLACE」を指定するすべての CREATE ステートメント
表 1 に示されている依存関係の一部は、データベース構成パラメーター auto_reval が IMMEDIATE または DEFERRED に設定されていると、 A (自動無効化/再有効化セマンティクス) に変わります。 表 2 に、影響を受ける従属オブジェクトの要約を示します。 「影響を受ける従属オブジェクト」列内にリストされたオブジェクトは、「ステートメント」列内にリストされた対応するステートメントが実行されると無効になります。
一部の DROP ステートメントのパラメーターおよびオブジェクトは、ブランク行またはブランク列になるため、 表 1 には示されていません。
  • EVENT MONITOR、PACKAGE、PROCEDURE、SCHEMA、TYPE MAPPING、 および USER MAPPING DROP ステートメントには、オブジェクトの従属関係はありません。
  • 別名、バッファー・プール、分散キー、特権、およびプロシージャーのオブジェクト・タイプには、 DROP ステートメントの従属関係はありません。
  • 指定した作業単位 (UOW) の内側にある A DROP SERVER、 DROP FUNCTION MAPPING、または DROP TYPE MAPPING ステートメントは、 以下に示すいずれかの条件下で処理することはできません。
    • ステートメントが単一のデータ・ソースを参照し、 このデータ・ソース内の表またはビューのニックネームを参照する SELECT ステートメントが、 UOW に既に含まれている場合 (SQLSTATE 55006)。
    • ステートメントがデータ・ソースの区分 (例えば、 特定のタイプおよびバージョンのすべてのデータ・ソース) を参照し、 こうしたデータ・ソースの 1 つの内側にある表またはビューのニックネームを参照する SELECT ステートメントが、 UOW に既に含まれている場合 (SQLSTATE 55006)。
表 1. 従属関係
記述 オブジェクト・タイプ
C
O
N
S
T
R
A
I
N
T
F
U
N
C
T
I
O
N
F
U
N
C
T
I
O
N

M
A
P
P
I
N
G
G
L
O
B
A
L

V
A
R
I
A
B
L
E

N
D
E
X
I
N
D
E
X

E
X
T
E
N
S
I
O
N
M
A
S
K
M
E
T
H
O
D
N
I
C
K
N
A
M
E
D
B

P
A
R
T
I
T
I
O
N

G
R
O
U
P
P
A
C
K
A
G
E31
P
E
R
M
I
S
S
I
O
N
S
E
R
V
E
R
S
E
R
V
I
C
E

C
L
A
S
S
T
A
B
L
E
T
A
B
L
E

S
P
A
C
E
T
H
R
E
S
H
O
L
D
T
R
I
G
G
E
R
T
Y
P
E
T
Y
P
E

M
A
P
P
I
N
G
U
S
A
G
R

L
I
S
T
U
S
E
R

M
A
P
P
I
N
G
V
I
E
W (V)
W
O
R
K

A
C
T
I
O
N
W
O
R
K

A
C
T
I
O
N

S
E
T
W
O
R
K
L
O
A
D
X
S
R
O
B
J
E
C
T
ALTER FUNCTION - - - - - - - - - - A - - - - - - - - - - - - - - - -
ALTER METHOD - - - - - - - - - - A - - - - - - - - - - - - - - - -
ALTER NICKNAME (ローカル名またはローカル・タイプを変更する) 33 R - - - - - R - - A - - - R - - - - - - - R - - - -
ALTER NICKNAME (列オプションまたはニックネーム・オプションを変更する) - - - - - - - - - - A - - - R - - - - - - - - - - - -
ALTER NICKNAME (制約を追加、変更、またはドロップする) - - - - - - - - - - A - - - - - - - - - - - - - - - -
ALTER PROCEDURE - - - - - - - - - - A - - - - - - - - - - - - - - - -
ALTER SERVER - - - - - - - - - - A - - - - - - - - - - - - - - - -
ALTER TABLE ALTER COLUMN - A - A - - R - - - A - - - - - - A - - - - A - - - 34
ALTER TABLE DROP COLUMN C C - C C - R - - - - R - - - - - C - - - - C - - - 34
ALTER TABLE DROP CONSTRAINT C - - - - - - - - - A1 - - - - - - - - - - - - - - - -
ALTER TABLE DROP PARTITIONING KEY - - - - - - - - - 20 A1 - - - - - - - - - - - - - - - -
ALTER TYPE ADD ATTRIBUTE - - - - - R - - - - 23 - - - 24 - - - - - - - R14 - - - -
ALTER TYPE ALTER METHOD - - - - - - - - - - A - - - - - - - - - - - - - - - -
ALTER TYPE DROP ATTRIBUTE - - - - - R - - - - 23 - - - 24 - - - - - - - R14 - - - -
ALTER TYPE ADD METHOD - - - - - - - - - - - - - - - - - - - - - - - - - - -
ALTER TYPE DROP METHOD - - - - - - - 27 - - - - - - - - - - - - - - - - - - -
CREATE METHOD - - - - - - - - - - 28 - - - - - - - - - - - - - - - -
CREATE TYPE - - - - - - - - - - 29 - - - - - - - - - - - - - - - -
DROP ALIAS - R - R - - R - - - A3 R - - C3 - - O3 - - - - O3 - - - -
DROP BUFFERPOOL - - - - - - - - - - - - - - - R - - - - - - - - - - -
DROP DATABASE PARTITION GROUP - - - - - - - - - - - - - - - C - - - - - - - - - - -
DROP FUNCTION R 7 R R - R R 7 - - X R - - R - - R - - - - R - - - -
DROP FUNCTION MAPPING - - - - - - - - - - A - - - - - - - - - - - - - - - -
DROP INDEX R - - - - - - - - - A - - - - - - - - - C37 - 17 - - - -
DROP INDEX EXTENSION - R - R R - - - - - - - - - - - - - - - - - - - - - -
DROP MASK - - - - - - - - - - 39 - - - - - - - - - - - - - - - -
DROP METHOD R 7 R R - R - R - - X、
A30
- - - R - - R - - - - R - - - -
DROP NICKNAME - R - R C - - R - - A - - - C11 - - - - - - - X16 - - - -
DROP PERMISSION - - - - - - - - - - 40 - - - - - - - - - - - - - - - -
DROP PROCEDURE - 7 - R - - - 7 - - A - - - - - - R - - - - - - - - -
DROP SEQUENCE - R - - - - - R - - A - - - - - - R - - - - - - - - -
DROP SERVER - C21 C19 - - - - - C - A - - - - - - - - C19 - C - - - - -
DROP SERVICE CLASS - - - - - - - - - - - - - - - - 35 - - - - - - 35 - 35 -
DROP STOGROUP - - - - - - - - - - - - - - - R - - - - - - - - - - -
DROP TABLE32 C R - R C - R - - - 9 R - - R、
C11
- - X16 - - C37 - X16 - - - 34
DROP TABLE HIERARCHY C R - R C - - - - - 9 - - - R、
C11
- - X16 - - - - X16 - - - -
DROP TABLESPACE - - - - C6 - - - - - - - - - C、
R6
- - - - - - - - - - - -
DROP TRANSFORM - R - - - - - - - - X - - - - - - - - - - - - - - - -
DROP TRIGGER - - - - - - - - - - A1 - - - - - - 26 - - - - - - - - -
DROP TYPE 13 5 - R - R - - - - A12 - - - 18 - - 13 4 - - - R14 - - - -
DROP VARIABLE - - R R - - R R - - A R - - - - - R - - - - R - - - -
DROP VIEW - R - R - - R - - - A2 R - - - - - X16 - - - - X15 - - - -
DROP VIEW HIERARCHY - R - R - - - - - - A2 - - - - - - X16 - - - - X16 - - - -
DROP WORK CLASS SET - - - - - - - - - - - - - - - - - - - - - - - - 36 - -
DROP WRAPPER - - C - - - - - - - - - C - - - - - - C - - - - - - -
DROP XSROBJECT C - - - - - - - - - A - - - - - - X - - - - X - - - -
特権の REVOKE 10 - C、
R25
- - - - 38 C、
R25
- - A1 38 - - C、
X8
- - X - - - - X8 (X) - - - -
1
この従属関係は、これらの制約、トリガー、 または分散キーを持つ表に従属することによって、暗黙的に決まります。
2
パッケージに、ビューに影響を与える INSERT、UPDATE、または DELETE ステートメントが含まれている場合、 そのパッケージはビューの基礎となる基本表に対して挿入、更新、または削除の操作を行うことになります。 UPDATE の場合、パッケージは UPDATE によって修正される基礎となる基本表の各列ごとに更新操作を行います。

型付きビューに対して操作を行うステートメントがパッケージに含まれている場合、 同じビュー階層内でビューを作成したりドロップしたりすると、パッケージが無効になります。

3
パッケージ、マテリアライズ照会表、ステージング表、ビュー、トリガーが別名を使用する場合、 その別名と、その別名が参照するオブジェクトの両方に従属することになります。 別名がチェーニングしている場合、そのチェーンの中の別名ごとに従属関係が作成されます。

別名自体は、どのような従属関係も持ちません。 存在していないオブジェクトに対しても、別名を定義できます。

4
あるユーザー定義タイプ T を別のユーザー定義タイプ B に従属させるには、 T が以下の条件を満たしていなければなりません。
  • 属性のデータ・タイプとして B を指定している
  • REF(B) の属性を持っている
  • スーパータイプとして B を持っている
5
ユーザー定義のタイプが関数仮パラメーター・タイプまたは戻りタイプとして参照される場合、そのタイプはドロップされ、そのカタログ・データはルーチン・パラメーターの依存関係があるために維持されます。 SYSCAT.DATATYPES カタログ・ビューの VALID 列にある値「X」は、このドロップされるタイプを示します。 そのカタログ・データが DROP FUNCTION ステートメントで削除されるのは、DROP FUNCTION ステートメントがこのタイプにおける最後のルーチン・パラメーター依存関係もドロップした場合です。あるいは、同じスキーマ名、モジュール名、およびタイプ名を指定して CREATE TYPE ステートメントを実行した場合に削除されます。 ユーザー定義タイプが構造化タイプである場合、そのタイプに関連したメソッドもすべてドロップされます。
6
表スペースまたは表スペースのリストをドロップすると、 指定した表スペース内に完全に含まれているすべての表やリストがドロップされることになります。 ただし、表が複数の表スペース (異なる表スペース内の索引、長形式列、またはデータ・パーティション) にわたり、 そうした表スペースがドロップされるリストにない場合、 これらの表スペースは表が存在する限りはドロップできません。
7
従属関数が SOURCE 節内の基本関数の名前である場合、 その関数は別の特定の関数に従属します。 また、従属のルーチンが SQL で書かれており、その本体で基本のルーチンを使用する場合も、 関数やメソッドは別の特定の関数やメソッドに従属することができます。 加えて、構造化タイプのパラメーターや戻りタイプを持つ外部のメソッドや関数も、 1 つまたは複数のトランスフォーム関数に従属することができます。
8
マテリアライズ照会表がドロップされたり、ビューが作動不能になるのは、SELECT 特権がない場合だけです。 作動不能にされたビューが型付きビュー階層に含まれていれば、そのサブビューもすべて作動不能になります。
9
パッケージに、表 T に影響を与える INSERT、UPDATE、または DELETE ステートメントが含まれている場合、 そのパッケージは T に対して挿入、更新、または削除の操作を行うことになります。 UPDATE の場合、パッケージは UPDATE によって修正される T の各列ごとに更新操作を行います。

型付き表に対して操作を行うステートメントがパッケージに含まれている場合、 同じ表階層内で表を作成したりドロップしたりすると、パッケージが無効になります。

10
列に対する特権を個々に取り消すことはできないので、列レベルでの従属関係は存在しません。

パッケージ、トリガー、またはビューの FROM 節で OUTER(Z) が使用されている場合、Z のすべての副表またはサブビューで SELECT 特権に対する従属関係が存在します。 同じように、パッケージ、トリガー、またはビューで DEREF(Y) が使用されていて、YZ という表またはビューをターゲットとする参照タイプである場合、Z のすべての副表またはサブビューで SELECT 特権に対する従属関係が存在します。

11
マテリアライズ照会表は、基礎表、あるいは表定義の全選択で指定されたニックネームに従属しています。

カスケードのセマンティクスが、従属するマテリアライズ照会表に適用されます。

副表はスーパー表に従属しており、この従属関係はルート表にまで及びます。 従属するすべての副表がドロップされるまで、スーパー表はドロップできません。

履歴表は、それが関連付けられているシステム期間テンポラル表に従属しています。 履歴表が従属しているシステム期間テンポラル表がドロップされるときは、カスケード・セマンティクスが履歴表に適用されます。

12
TYPE 述部またはサブタイプ処理の式 (TREAT expression AS data-type) を使用した結果、 パッケージは構造化タイプに従属することができます。 パッケージは、TYPE 述部の右辺、 または TREAT 式の右辺で指定した各構造化タイプのサブタイプすべてと従属関係にあります。 構造化タイプをドロップしたり作成したりして、パッケージと従属関係にあるサブタイプを変更すると、 ステートメントが無効になる場合があります。

ドロップするタイプのスーパータイプで定義されるメソッドに従属し、 オーバーライドに適したパッケージはすべて、無効になります。

13
あるタイプがチェック制約またはトリガーで使用されている場合、 チェック制約またはトリガーはこのタイプに従属する関係にあります。 チェック制約またはトリガーの TYPE 述部で使用される、 構造化タイプのサブタイプに従属しません。
14
あるタイプがビュー定義で使用されている場合、 ビューはこのタイプに従属する関係にあります (型付きビューのタイプも含まれます)。 ビュー定義内の TYPE 述部で使用される、構造化タイプのサブタイプに従属しません。
15
サブビューはスーパービューに従属しており、この従属関係はルート・ビューにまで及びます。 従属するすべてのサブビューがドロップされるまで、スーパービューはドロップできません。 ビューの従属関係の詳細については、 16 を参照してください。
16
トリガーまたはビューは 間接参照操作または DEREF 関数のターゲット表やターゲット・ビューにも従属しています。 FROM 節のトリガーまたはビューで OUTER(Z) を含むものは、 トリガーまたはビューが作成された時点に存在した Z の副表またはサブビューすべてに対して従属関係にあります。
17
型付きビューはユニーク索引が存在しているかどうかに依存していることがあり、 それによってオブジェクト ID 列がユニークなものにすることができます。
18
表はユーザー定義データ・タイプ (特殊タイプまたは構造化タイプ) に従属している場合があり、 それには以下の理由があります。
  • そのタイプが列のタイプとして使用されている
  • そのタイプが表のタイプとして使用されている
  • そのタイプが表のタイプの属性として使用されている
  • そのタイプが、表の列タイプまたは表のタイプの属性を表す、 参照タイプのターゲット・タイプとして使用されている
  • そのタイプが、表の列のタイプによって直接または間接的に使用されている
19
サーバーをドロップすると、カスケード的に、 そのネーム・サーバーに作成した関数マッピングとタイプ・マッピングがドロップされます。
20
複数パーティションのデータベース・パーティション・グループにある表に対して分散キーが定義されている場合、 この分散キーは必須です。
21
従属している OLE DB 表関数に "R" 従属オブジェクト (DROP FUNCTION を参照) が含まれている場合は、 サーバーをドロップできません。
22
SQL 関数またはメソッドは、 その本体によって参照されるオブジェクトに従属することができます。
23
type-name T のタイプ TA の属性 A がドロップされると、 以下の DROP ステートメントが実際に実行されます。
   Mutator method: DROP METHOD A (TA) FOR T
   Observer method: DROP METHOD A () FOR T
   ALTER TYPE T
     DROP METHOD A(TA)
     DROP METHOD A()
24
次のような場合に、表はユーザー定義による構造化データ・タイプの属性に従属することがあります。
  1. 表が、type-name またはそのサブタイプのいずれかに基づく型付き表である。
  2. 表に、type-name を直接または間接的に参照するタイプの列が含まれている。
25
定義された関数またはメソッド本体に SELECT 特権がなくなると、 SQL 関数の本体またはメソッド本体で使用される表またはビューに対する SELECT 特権の REVOKE により、 特権を失った関数またはメソッド本体のドロップが試行されます。 これらの関数またはメソッド本体がビュー、トリガー、関数、またはメソッド本体で使用されている場合は、 これをドロップすることはできないので、結果として REVOKE が制約されます。 それ以外の場合は、REVOKE がカスケードしてそれらの関数はドロップされます。
26
トリガーは、INSTEAD OF トリガーが定義されるビューを変更して、 INSTEAD OF トリガーが実行される場合、INSTEAD OF トリガーに従属します。
27
他のメソッドによってオーバーライドされた元のメソッドのメソッド宣言は、ドロップすることができません (SQLSTATE 42893)。
28
作成されるメソッド本体のメソッドが、 別のメソッドをオーバーライドするものと宣言される場合、オーバーライドされるメソッド (および、 作成されるメソッドのスーパータイプでこのメソッドをオーバーライドするメソッド) に従属したパッケージはすべて無効になります。
29
既存のタイプの新しいサブタイプが作成されると、 作成されるタイプのスーパータイプで定義されるメソッド (および、 オーバーライドに適しているメソッド (例えば、 no mutator や observer)) に従属するパッケージはすべて無効になります。
30
ドロップされるメソッド本体の特定メソッドが、 別のメソッドをオーバーライドするものと宣言される場合、オーバーライドされるメソッド (および、 ドロップされる特定メソッドのスーパータイプでこのメソッドをオーバーライドするメソッド) に従属したパッケージはすべて無効になります。
31
キャッシュに入れられた動的 SQL には、パッケージと同じセマンティクスがあります。
32
DROP TABLE ステートメントを使ってリモート基本表をドロップするときには、 ニックネームとリモート基本表の両方がドロップされます。
33
外部キーが参照していない主キーまたはユニーク・キーは、 ニックネームのローカル名やローカル・タイプの変更を制限しません。
34
XSROBJECT は、分解対象の XML スキーマに関連付けられている表を変更した結果として、分解操作が機能しなくなることがあります。 分解操作に影響を与える変更としては、表のドロップ、表の列のドロップ、表の列の変更があります。 ALTER XSROBJECT ステートメントを実行すれば、XML スキーマの分解状況をリセットして、XML スキーマの分解を使用可能/使用不可にすることができます。
35
  • サービス・クラスに対して何らかのワークロードがマップされている場合、そのサービス・クラスはドロップできません (SQLSTATE 5U031)。
  • サービス・サブクラスに対して作業アクションがマップされている場合、そのサービス・サブクラスはドロップできません (SQLSTATE 5U031)。
  • しきい値 REMAP アクションのターゲットであるサービス・サブクラスを、明示的にドロップすることはできません (SQLSTATE 5U031)。

サービス・スーパークラスをドロップすると、そのサービス・クラスに対して定義されているしきい値、作業アクション・セット、およびサービス・サブクラスもカスケード式にドロップされます。

36
作業クラス・セットに対して定義されている作業アクション・セットがドロップされるまでは、その作業クラス・セットをドロップできません。
37
索引または表がドロップされると、その使用リストはカタログ内で無効になります。 そのリストは、次回活動化される時に再び妥当性検査されます。プロシージャー ADMIN_REVALIDATE_DB_OBJECTS を使用して明示的に再び妥当性検査することもできます。
38
権限またはマスクが特定のオブジェクトに依存しており、特権の取り消し操作によってそのオブジェクトがドロップまたは無効化される場合、その操作は制限されます。 例えば、表に依存するビューがあり、そのビューを権限またはマスクが参照している場合、 表に対して REVOKE SELECT を実行すると、ビューは無効化されますが、エラーとなります。
39
有効な権限が定義されている表において行レベルのアクセス制御がアクティブになっている場合、 パッケージは無効化されます。 無効な権限、または 行アクセス制御が非アクティブになっている表に定義されている権限をドロップする場合は、 パッケージへの影響はありません。
40
有効な権限が定義されている表において行レベルのアクセス制御がアクティブになっている場合、 パッケージは無効化されます。 無効な権限、または 行アクセス制御が非アクティブになっている表に定義されている権限をドロップする場合は、 パッケージへの影響はありません。
表 2. auto_reval の影響を受ける従属オブジェクト
記述 影響を受ける従属オブジェクト
ALTER NICKNAME (ローカル名またはローカル・タイプの変更) アンカー・タイプ、関数、メソッド、プロシージャー、ユーザー定義タイプ、変数、ビュー
ALTER TABLE ALTER COLUMN アンカー・タイプ、関数、メソッド、プロシージャー、トリガー4ユーザー定義タイプ、変数、ビュー、XSROBJECT
ALTER TABLE DROP COLUMN2 アンカー・タイプ、関数、メソッド、索引、プロシージャー、トリガー4ユーザー定義タイプ、変数、ビュー、XSROBJECT
ALTER TABLE RENAME COLUMN1, 3 アンカー・タイプ、関数、メソッド、索引、プロシージャー、トリガー4ユーザー定義タイプ、変数、ビュー、XSROBJECT
ALTER TYPE ADD ATTRIBUTE ビュー
ALTER TYPE DROP ATTRIBUTE ビュー
DROP ALIAS アンカー・タイプ、関数、メソッド、プロシージャー、トリガー、ユーザー定義タイプ、変数、ビュー
DROP FUNCTION (ALTER MODULE DROP FUNCTION) 関数、関数マッピング、索引拡張、メソッド、プロシージャー、トリガー、変数、ビュー
DROP METHOD 関数、関数マッピング、索引拡張、メソッド、プロシージャー、トリガー、変数、ビュー
DROP NICKNAME アンカー・タイプ、関数、メソッド、プロシージャー、トリガー、ユーザー定義タイプ、変数、ビュー
DROP PROCEDURE (ALTER MODULE DROP PROCEDURE) 関数、メソッド、プロシージャー、トリガー
DROP SEQUENCE 関数、メソッド、プロシージャー、トリガー、変数、ビュー
DROP TABLE アンカー・タイプ、関数、メソッド、プロシージャー、トリガー4ユーザー定義タイプ、変数、ビュー、XSROBJECT
DROP TABLE HIERARCHY 関数、メソッド、プロシージャー、トリガー、変数、ビュー
DROP TRIGGER トリガー
DROP TYPE (ALTER MODULE DROP TYPE) アンカー・タイプ、カーソル・タイプ、関数、メソッド、プロシージャー、索引拡張、トリガー、ユーザー定義タイプ、変数、ビュー
DROP VARIABLE (ALTER MODULE DROP VARIABLE) アンカー・タイプ、関数、関数マッピング、メソッド、プロシージャー、トリガー、ユーザー定義タイプ、変数、ビュー
DROP VIEW アンカー・タイプ、関数、メソッド、プロシージャー、トリガー4ユーザー定義タイプ、変数、ビュー
DROP VIEW HIERARCHY 関数、プロシージャー、トリガー、変数、ビュー
DROP XSROBJECT トリガー、ビュー
RENAME TABLE アンカー・タイプ、関数、メソッド、プロシージャー、トリガー4ユーザー定義タイプ、変数、ビュー、XSROBJECT
特権の REVOKE 関数、メソッド、プロシージャー、トリガー、変数、ビュー
CREATE OR REPLACE ALIAS1 関数、トリガー、プロシージャー、変数、ビュー
CREATE OR REPLACE VIEW1 アンカー・タイプ、関数、メソッド、プロシージャー、トリガー4ユーザー定義タイプ、変数、ビュー
CREATE OR REPLACE FUNCTION1 関数、関数マッピング、索引拡張、メソッド、プロシージャー、変数、ビュー
CREATE OR REPLACE PROCEDURE1 関数、メソッド、プロシージャー、トリガー
CREATE OR REPLACE NICKNAME1 関数、メソッド、プロシージャー、変数、ビュー
CREATE OR REPLACE SEQUENCE1 関数、メソッド、プロシージャー、トリガー、変数、ビュー
CREATE OR REPLACE VARIABLE1 関数、メソッド、プロシージャー、トリガー、ユーザー定義タイプ、変数、ビュー
CREATE OR REPLACE TRIGGER1 トリガー
1
即時再有効化セマンティクスは、auto_reval データベース構成パラメーターの設定に関係なく、これらのステートメントに (OR REPLACE が指定されている場合のみ CREATE ステートメントに) 適用されます。
2
リストされた従属オブジェクトは、次回使用時に再度有効化されます。 ただし、ステートメントの一部として即時に有効化される、 以下のオブジェクトを除きます。
  • ANCHOR TYPE (アンカー・タイプ)
  • CURSOR TYPE (カーソル・タイプ)
  • VIEW (ビュー) (選択リストが SELECT * のみで構成され、明示的に定義されたビュー列が含まない場合)。
即時のビューの再有効化の場合、選択リストの列名のリストは再有効化時に再作成されます。
3
リストされた従属オブジェクトは、次回使用時に再度有効化されます。ただし、ステートメントの一部として即時に有効化される、以下のオブジェクトを除きます。
  • ユーザー定義タイプ
  • VIEW (ビュー) (選択リストが SELECT * のみで構成され、明示的に定義されたビュー列が含まない場合)。
即時のビューの再有効化の場合、選択リストの列名のリストは再有効化時に再作成されます。
4
表またはビューにトリガーが定義されていることが従属関係の理由である場合は、表 1 の作動不能セマンティクスが引き続き適用されます。 トリガー本体が表またはビューを参照することが従属関係の理由である場合は、自動無効化および再有効化セマンティクスが適用されます。

DROP DATABASE PARTITION GROUP ステートメントは、データベース・パーティション・サーバーの追加要求が保留中または進行中の場合、失敗することがあります (SQLSTATE 55071)。 また、このステートメントは、新規データベース・パーティション・サーバーがオンラインでインスタンスに追加され、すべてのアプリケーションがこの新規データベース・パーティション・サーバーについて認識しているわけではない場合にも失敗する可能性があります (SQLSTATE 55077)。

  • ユーザー定義関数を使用中に、そのユーザー定義関数をドロップすることは有効です。 また、ユーザー定義関数への参照を含むステートメントでカーソルがオープンされているようにすることができます。 そのカーソルがオープンされている間に、 カーソルのフェッチがエラーになることなくその関数をドロップすることができます。
  • ユーザー定義関数に従属しているパッケージが実行されている場合、 そのパッケージが現行の作業単位を完了するまで、 別の許可 ID からその関数をドロップすることはできません。 その時点で、関数はドロップされ、パッケージは作動不能になります。 このパッケージの次の要求はエラーになり、パッケージの明示再バインドが必要であることが示されます。
  • 関数本体を必要とするアプリケーションが実行されている時に、 関数本体が除去される場合があります (これは関数のドロップとは異なります)。 ステートメントの代わりにデータベース・マネージャーが関数本体をストレージにロードする必要があるかどうかに応じて、 ステートメントはエラーになる場合もあれば、エラーにならない場合もあります。
  • 明示的に指定された UDF に記録されている従属関係に加えて、 トランスフォームが暗黙的に必要な場合には以下の従属関係が記録されます。
    1. 構造化タイプのパラメーターや関数またはメソッドの結果にトランスフォームが必要な場合は、 その関数またはメソッドに、 TO SQL か FROM SQL の必要なトランスフォーム関数に対する従属関係が記録されます。
    2. パッケージに含まれている SQL ステートメントでトランスフォーム関数が必要になる場合は、 そのパッケージに、TO SQL か FROM SQL の指定されたトランスフォーム関数に対する従属関係が記録されます。

    上記は、トランスフォームの暗黙呼び出しによって従属関係が記録される場合のみに限定した説明であるため、 関数、メソッド、あるいはパッケージ以外のオブジェクトが、 暗黙的に呼び出されたトランスフォーム関数に従属することはありません。 一方、トランスフォーム関数を明示的に呼び出した場合 (例えば、ビューやトリガーなどで) は、 これらの他のタイプのオブジェクトが通常どおりトランスフォーム関数に従属します。 したがって、トランスフォームに対するこれらの「明示的な」タイプの従属がドロップされることによって、 DROP TRANSFORM が失敗する場合もあります (SQLSTATE 42893)。

  • 従属関係カタログでは、 暗黙的なトランスフォームによる関数への従属と明示的に関数を呼び出すことによって生じる従属とを区別していません。 したがって、トランスフォーム関数に対する明示的な呼び出しは書かないよう勧められています。 このようなインスタンスでは、単に SQL の式に明示的な呼び出しが含まれているという理由で、 関数上のトランスフォーム・プロパティーがドロップされなかったり、 パッケージが作動不能としてマークされてしまいます。
  • ID 列のシーケンスを作成したシステムを、DROP SEQUENCE ステートメントで ドロップすることはできません。
  • シーケンスがドロップされると、シーケンスに関する特権もすべてドロップされ、 そのシーケンスを参照するパッケージはすべて無効になります。
  • リレーショナル・ニックネームの場合、 所定の作業単位 (UOW) 内の DROP NICKNAME ステートメントは、 以下のいずれかの条件の下では処理できません (SQLSTATE 55007)。
    • このステートメントで参照されているニックネームには、同じ UOW 内でオープンされているカーソルがある。
    • このステートメントで参照されているニックネームに対して、 同じ UOW 内で既に INSERT、DELETE、または UPDATE ステートメントのいずれかが出されている。
  • 非リレーショナル・ニックネームの場合、 所定の作業単位 (UOW) 内の DROP NICKNAME ステートメントは、 以下のいずれかの条件の下では処理できません (SQLSTATE 55007)。
    • このステートメントで参照されているニックネームには、同じ UOW 内でオープンされているカーソルがある。
    • このステートメントで参照されているニックネームは、 同じ UOW 内の SELECT ステートメントで既に参照されている。
    • このステートメントで参照されているニックネームに対して、 同じ UOW 内で既に INSERT、DELETE、または UPDATE ステートメントのいずれかが出されている。
  • 所定の作業単位 (UOW) 内の DROP SERVER ステートメント (SQLSTATE 55006)、 または DROP FUNCTION MAPPING あるいは DROP TYPE MAPPING ステートメント (SQLSTATE 55007) は、 以下のいずれかの条件の下では処理できません。
    • ステートメントが 1 つのデータ・ソースを参照していて、 次の項目のいずれかが既に UOW に含まれている。
      • このデータ・ソース内の表またはビューのニックネームを参照する SELECT ステートメント。
      • このデータ・ソース内の表またはビューのニックネーム上のオープン・カーソル。
      • このデータ・ソース内の表またはビューのニックネームに対して発行された INSERT、DELETE、または UPDATE ステートメント。
    • ステートメントがデータ・ソースのカテゴリー (例えば、 特定のタイプおよびバージョンのすべてのデータ・ソースなど) を参照しており、 次の項目のいずれかが既に UOW に含まれている。
      • それらのデータ・ソースのいずれかの中の表またはビューのニックネームを参照する SELECT ステートメント。
      • それらのデータ・ソースのいずれかの中の表またはビューのニックネーム上のオープン・カーソル。
      • それらのデータ・ソースのいずれかの中の表またはビューのニックネームに対して 発行された INSERT、DELETE、または UPDATE ステートメント。
  • DROP WORKLOAD ステートメントは、コミットされるまでは有効になりません。これは、ステートメントを発行する接続でも同じです。
  • これらのステートメントはアプリケーションによって一度に 1 つのみ発行され、1 つの作業単位内で 1 つのみ許可されます。 これらのステートメントのいずれかを次に発行する前に、各ステートメントの後に COMMIT または ROLLBACK ステートメントを使用する必要があります (SQLSTATE 5U021)。
    • CREATE HISTOGRAM TEMPLATE、ALTER HISTOGRAM TEMPLATE、または DROP (HISTOGRAM TEMPLATE)
    • CREATE SERVICE CLASS、ALTER SERVICE CLASS、または DROP (SERVICE CLASS)
    • CREATE THRESHOLD、ALTER THRESHOLD、または DROP (THRESHOLD)
    • CREATE WORK ACTION、ALTER WORK ACTION、または DROP (WORK ACTION)
    • CREATE WORK CLASS、ALTER WORK CLASS、または DROP (WORK CLASS)
    • CREATE WORKLOAD、ALTER WORKLOAD、または DROP (WORKLOAD)
    • GRANT (ワークロード特権) または REVOKE (ワークロード特権)
  • ソフトな無効化: データベース・オブジェクトのドロップまたは変更が以下のステートメントによって行われた後も、ドロップまたは変更されたオブジェクトへのアクティブなアクセスは、このアクセスが完了するまで続行されます。
    • ALTER FUNCTION
    • ALTER MODULE ... DROP FUNCTION
    • ALTER MODULE ... DROP VARIABLE
    • テーブルの変更... DETACH PARTITION
    • ALTER VIEW
    • DROP ALIAS
    • DROP FUNCTION
    • DROP TRIGGER
    • DROP VARIABLE
    • DROP VIEW
    • CREATE OR REPLACE SEQUENCE 以外のすべての CREATE OR REPLACE ステートメント。
    これは、データベース・レジストリー変数 DB2_DLL_SOFT_INVALID が ON に設定されている場合です。 この変数が OFF に設定されている場合、これらのオブジェクトのドロップまたは変更は、 ドロップまたは変更されるオブジェクトへのすべてのアクティブなアクセスの完了後にしか完了されません。
  • 代替構文: Db2® の以前のバージョンとの互換性のために、以下の代替の構文がサポートされています。 およびその他のデータベース製品。 これらの代替は非標準であり、使用すべきではありません。
    • DATABASE PARTITION GROUP の代わりに NODEGROUP を指定できます。
    • TYPE type-name の代わりに DISTINCT TYPE type-name を指定できます。
    • TYPE type-name の代わりに DATA TYPE type-name を指定できます。
    • ALIAS の代わりに SYNONYM を指定できます。
    • PACKAGE の代わりに PROGRAM を指定できます。
  • 行権限または列マスクをドロップした後のパッケージと動的キャッシュ・ステートメントの無効化: 表に対して行レベルのアクセス制御がアクティブになっている場合に、その表に定義された有効な行権限をドロップすると、その同じ表を参照するすべてのパッケージおよび動的キャッシュ・ステートメントは無効になります。 表に対して列レベルのアクセス制御がアクティブになっている場合に、その表に定義された有効な列マスクをドロップすると、その同じ表を参照するすべてのパッケージおよび動的キャッシュ・ステートメントは無効になります。 使用不可になったマスクまたは権限をドロップする場合は、無効化は生じません。
  • 循環依存関係: 循環依存関係は、以下の例において存在します。
    CREATE PERMISSION RP1 ON T1 FOR ROWS
         WHERE C1>(SELECT MAX(C1) FROM T2)
    ENFORCED FOR ALL ACCESS
    ENABLE;
    
    CREATE PERMISSION RP2 ON T2 FOR ROWS
         WHERE C1>(SELECT MAX(C1) FROM T1)
    ENFORCED FOR ALL ACCESS
    ENABLE
    DROP TABLE T1 および DROP TABLE T2 の各ステートメントは失敗します。RP1T2 に依存し、RP2T1に依存するためです。 SECADM 権限を持つユーザーは、最初にいずれかの行権限をドロップしてから DROP TABLE ステートメントを発行する必要があります。

  1. TDEPT 表をドロップします。
       DROP TABLE TDEPT
  2. VDEPT ビューをドロップします。
       DROP VIEW VDEPT
  3. 許可 ID HEDGES が別名のドロップを試みます。
       DROP ALIAS A1
    別名 HEDGES.A1 がカタログから除去されます。
  4. Hedges は別名のドロップを試みますが、既存の表の名前である (別名でない) T1 を別名として指定しています。
       DROP ALIAS T1
    このステートメントはエラーになります (SQLSTATE 42809)。
  5. BUSINESS_OPS データベース・パーティション・グループをドロップします。 このデータベース・パーティション・グループをドロップするには、 まずデータベース・パーティション・グループ内の表スペース (ACCOUNTING と PLANS) をドロップする必要があります。
       DROP TABLESPACE ACCOUNTING
       DROP TABLESPACE PLANS
       DROP DATABASE PARTITION GROUP BUSINESS_OPS
  6. Pellow は CENTER 関数をドロップします。この関数は、ドロップする関数インスタンスであることを示すためにシグニチャーを使用して、PELLOW スキーマに作成したものです。
       DROP FUNCTION CENTER (INT,FLOAT)
  7. McBride は FOCUS92 関数をドロップします。この関数は、ドロップする関数インスタンスであることを示すために特定名を使用して、PELLOW スキーマに作成したものです。
       DROP SPECIFIC FUNCTION PELLOW.FOCUS92
  8. CHEM スキーマから関数 ATOMIC_WEIGHT をドロップします。このスキーマには、この名前の関数は 1 つしかないことが分かっています。
       DROP FUNCTION CHEM.ATOMIC_WEIGHT
  9. トリガー SALARY_BONUS をドロップします。このトリガーにより、従業員は指定の条件の下で給与に加えてボーナスを受け取ります。
       DROP TRIGGER SALARY_BONUS
  10. 現在使用していない SHOESIZE という名前の特殊データ・タイプをドロップします。
       DROP TYPE SHOESIZE
  11. SMITHPAY イベント・モニターをドロップします。
       DROP EVENT MONITOR SMITHPAY
  12. CREATE SCHEMA の例 2 で RESTRICT を使用して作成したスキーマをドロップします。 PART という名前の表をまずドロップする必要があることに注意してください。
      DROP TABLE PART
      DROP SCHEMA INVENTRY RESTRICT
  13. Macdonald は、EIGLER スキーマに作成した DESTROY プロシージャーをドロップします。その際、ドロップ対象のプロシージャーを特定するために、システム・カタログ内にある特定の名前を使用します。
       DROP SPECIFIC PROCEDURE  EIGLER.SQL100506102825100
  14. BIOLOGY スキーマからプロシージャー OSMOSIS をドロップします。このスキーマには、この名前のプロシージャーは 1 つしかないことが分かっています。
       DROP PROCEDURE BIOLOGY.OSMOSIS
  15. ユーザー SHAWN は、フェデレーテッド・データベースにアクセスするときと、ORACLE1 という Oracle データ・ソースのデータベースにアクセスするときでは、異なる許可 ID を使用しました。 2 つの許可でマッピングが作成されましたが、 SHAWN がそのデータ・ソースにアクセスする必要はなくなりました。 マッピングをドロップします。
       DROP USER MAPPING FOR  SHAWN SERVER ORACLE1
  16. ニックネームが参照するデータ・ソース表の索引が削除されました。 オプティマイザーにこの索引を認識させるために作成した SPECIFICATION ONLY 指定の索引をドロップします。
       DROP INDEX INDEXSPEC 
  17. MYSTRUCT1 トランスフォーム・グループをドロップします。
       DROP TRANSFORM MYSTRUCT1 FOR POLYGON
  18. PERSONNEL スキーマで EMP データ・タイプからメソッド BONUS をドロップします。
       DROP METHOD BONUS (SALARY DECIMAL(10,2)) FOR PERSONNEL.EMP
  19. 制限を使用して ORG_SEQ からシーケンスをドロップします。
       DROP SEQUENCE ORG_SEQ
  20. リモート表 EMPLOYEE が、フェデレーテッド・システムに透過 DDL を使用して作成されました。 この表へのアクセスは、今後は必要ありません。 リモート表 EMPLOYEE をドロップします。
       DROP TABLE EMPLOYEE
  21. 関数マッピング BONUS_CALC をドロップし、デフォルトの関数マッピングがあればそれを復元します。
       DROP FUNCTION MAPPING BONUS_CALC
  22. セキュリティー・ラベル・コンポーネント LEVEL をドロップします。
       DROP SECURITY LABEL COMPONENT LEVEL
  23. セキュリティー・ポリシー DATA_ACCESS のセキュリティー・ラベル EMPLOYEESECLABEL をドロップします。
       DROP SECURITY LABEL DATA_ACCESS.EMPLOYEESECLABEL
  24. セキュリティー・ポリシー DATA_ACCESS をドロップします。
       DROP SECURITY POLICY DATA_ACCESS
  25. セキュリティー・ラベル・コンポーネント GROUPS をドロップします。
       DROP SECURITY LABEL COMPONENT GROUPS
  26. SQL スキーマ HR にある XML スキーマ EMPLOYEE をドロップします。
       DROP XSROBJECT HR.EMPLOYEE
  27. サービス・スーパークラス PETSALES の下にあるサービス・サブクラス DOGSALES をドロップします。
       DROP SERVICE CLASS DOGSALES UNDER PETSALES
  28. ユーザー定義サービス・サブクラスを持たないサービス・スーパークラス PETSALES をドロップします。 サービス・クラス PETSALES のデフォルト・サブクラスは自動的にドロップされます。
       DROP SERVICE CLASS PETSALES
  29. 権限 P1 の DROP。
       DROP PERMISSION P1
  30. マスク M1 の DROP。
       DROP MASK M1
  31. TEST_SG という名前のストレージ・グループをドロップします。
       DROP STOGROUP TEST_SG
  32. 使用リスト MON_PAYROLL をドロップします。
       DROP USAGE LIST MON_PAYROLL