表のドロップ

表をドロップするには、DROP TABLE ステートメントを使用できます。

このタスクについて

表がドロップされると、その表についての情報が含まれる SYSCAT.TABLES システム・カタログ・ビュー内の行がドロップされます。その表に依存する他のオブジェクトがあれば、それらも影響を受けます。 以下に例を示します。
  • すべての列名はドロップされます。
  • その表の列について作成された索引はドロップされます。
  • その表に基づくすべてのビューには作動不能のマークが付けられます。
  • ドロップされた表と従属ビューに対するすべての特権が暗黙のうちに取り消されます。
  • その表が親表または従属表となっている参照制約がすべてドロップされます。
  • ドロップされた表に依存するすべてのパッケージおよびキャッシュに入った動的 SQL および XQuery ステートメントは、無効のマークが付けられ、従属オブジェクトが再作成されるまで、そのままの状態になります。 ドロップされる階層内の副表の上にあるスーパー表に依存しているパッケージが含まれます。
  • ドロップした表が参照の有効範囲として定義されていた参照列は、有効範囲なしになります。
  • その表の別名定義は影響を受けません。別名は「未定義」状態となります。
  • ドロップされた表に依存しているすべてのトリガーには、作動不能のマークが付けられます。


の制約事項

個々の表に副表がある場合、その表はドロップできません。

プロシージャー

  • 表をドロップするには、DROP TABLE ステートメントを使用します。
    次のステートメントは、DEPARTMENT という表をドロップするものです。
       DROP TABLE DEPARTMENT
  • 表階層内の表をすべてドロップするには、DROP TABLE HIERARCHY ステートメントを使用します。

    DROP TABLE HIERARCHY ステートメントでは、ドロップする階層のルート表を指定しなければなりません。

    以下に例を示します。
       DROP TABLE HIERARCHY person

結果

表階層のドロップと特定表のドロップを比較した場合、次のような明らかな相違があります。
  • DROP TABLE HIERARCHY は、 個々の DROP TABLE ステートメントで活動化される削除トリガーを活動化しない。 例えば、個々の副表をドロップすると、 そのスーパー表に対する削除トリガーが活動化されます。
  • DROP TABLE HIERARCHY は、ドロップされた表の個々の行についてログ項目を作成しない。 代わりに、階層のドロップは単一のイベントとしてログ記録されます。