3.29.1 DROP TABLEの形式と規則
(1) 機能
表を削除します。
(2) 使用権限
- 指定する表の所有者
-
自分が所有する表を削除できます。
- DBA権限を持つユーザ
-
他ユーザの所有する表を削除できます。
(3) 形式
DROP TABLE 〔認可識別子.〕表識別子〔WITH PROGRAM〕
(4) オペランド
(a) 〔認可識別子.〕表識別子〔WITH PROGRAM〕
- 認可識別子
-
表を所有するユーザの認可識別子を指定します。
省略した場合,実行するユーザの認可識別子を仮定します。
- 表識別子
-
削除する表の名称を指定します。
- WITH PROGRAM
-
表を削除する場合,その表をSQL手続き文で使用する手続き,及びトリガの有効なSQLオブジェクトを無効にしたいときに指定します。
WITH PROGRAMを省略した場合,表を使用する手続き,及びトリガの有効なSQLオブジェクト(削除する表が参照する被参照表に,内部的に定義されている参照制約動作を行うためのトリガを除きます)があると,その表は削除できません。
参照表を削除した場合,次の表に示す手続き,及びトリガの有効なSQLオブジェクトを無効にします。
表3‒37 無効になるオブジェクト 作成バージョン
オブジェクトの内容
オブジェクトの種類
無効になる条件
07-00以降
手続き,及びトリガのオブジェクト
参照表が参照する被参照表を使用したUPDATE文又は,DELETE文を含む場合
07-00より前
参照表が参照する被参照表を使用したSQL文を含む場合
(5) 共通規則
-
表を削除すると,その表に対して定義したインデクス,ビュー表(パブリックビューも含む),コメント,アクセス権限,及びトリガは,削除されます。
参照表を削除した場合は,被参照表に内部的に定義されている参照制約動作を行うためのトリガも合わせて削除されます。
-
実行中のSQLオブジェクトが無効になる場合,Java手続き中からDROP TABLEは実行できません。
-
インナレプリカ機能を使用している場合のDROP TABLEの実行条件については,マニュアル「インナレプリカ機能 HiRDB Staticizer Option」を参照してください。
-
表に定義しているLOB列,又はLOB属性の列を格納するRDエリアに更新凍結指定を指定している場合,その表は削除できません。
-
指定した表が改竄防止表で,かつその改竄防止表に行がある場合,表は削除できません。
-
DBA権限を持つユーザは,他ユーザが所有する表を削除できますが,監査人の所有する監査証跡表は削除できません。
-
外部キーで参照される被参照表は削除できません。
-
SQLセッション固有一時表を使用しているSQLセッション中で,使用中のSQLセッション固有一時表は削除できません。
(6) 留意事項
-
DROP TABLEは,OLTP下のX/Openに従ったUAPから指定できません。
-
WITH PROGRAMを指定して手続き,及びトリガの有効なSQLオブジェクトを無効にした場合,ディクショナリ表SQL_ROUTINE_RESOURCES中の無効となった手続き,及びトリガの情報は削除されます。
-
WITH PROGRAMを指定して無効にした手続き,及びトリガのSQLオブジェクトを実行するためには,ALTER ROUTINE又はALTER PROCEDUREを実行して手続き,及びトリガのSQLオブジェクトを再作成しておく必要があります。
-
WITH PROGRAMを指定して無効にしたトリガのSQLオブジェクトを実行するためには,次のどちらかの操作をする必要があります。
-
表を定義し直して,ALTER TRIGGER又はALTER ROUTINEを実行してトリガのSQLオブジェクトを再作成する。
-
無効にしたトリガをDROP TRIGGERで削除してから,削除した表を使用しないようにCREATE TRIGGERでトリガを再定義します。ただし,次のすべての条件を満たすトリガがある場合は,それらもすべてDROP TRIGGERで削除し,定義していた順にCREATE TRIGGERで再定義しないと,トリガ動作の実行順序が変わります。
(条件)
・無効にしたトリガよりも定義したのが後である。
・無効にしたトリガと定義した表が同じである。
・無効にしたトリガとトリガ契機(INSERT,UPDATE,又はDELETE)が同じである(ただし,UPDATEの場合は,トリガ契機列の指定の有無,及び内容に関係なく同じとみなされます)。
・無効にしたトリガとトリガ動作時期(BEFORE又はAFTER)が同じである。
・無効にしたトリガとトリガの動作する単位(行単位又は文単位)が同じである。
-
(7) 使用例
在庫表(ZAIKO)を削除します。
DROP TABLE ZAIKO