Oracle 19cの表削除と条件付き復旧を扱います。以下のSQLは独立した教材例で、Oracle実行・復旧・性能は未検証です。製品別比較は各製品の条件で読み、連続した本番手順として実行しないでください。
| この記事の要点 |
|
DROP TABLE とは
DROP TABLE はテーブルの定義(メタ情報)と格納データを同時に削除する DDL 文です。データだけ消したい場合は TRUNCATE や DELETE を使います。
構文
製品別の構文比較であり実行用SQLではありません。角括弧や省略記号をそのまま実行しないでください。Oracle 19c、MySQL 8.4、PostgreSQL 18、SQL Server 2016以降のIF EXISTSを区別します。CASCADEの依存削除範囲は製品で異なります。Oracle実行は未検証です。
-- Oracle
DROP TABLE 表名 [CASCADE CONSTRAINTS] [PURGE];
-- MySQL
DROP TABLE [IF EXISTS] 表名 [, 表名 ...];
-- PostgreSQL
DROP TABLE [IF EXISTS] 表名 [, 表名 ...] [CASCADE | RESTRICT];
-- SQL Server
DROP TABLE [IF EXISTS] 表名;
Oracle のオプション
| オプション | 意味 |
|---|---|
| なし | 対象・設定等の条件を満たす場合にRecycle Binへ移動。残存・権限・名前等を確認してFlashback Dropを検討する |
CASCADE CONSTRAINTS | 他表からの参照整合性制約(外部キー)も削除 |
PURGE | Recycle Binに入れず削除。Flashback Drop不可。他の復旧方式の可否は別途確認する |
例
保存した独立した破壊的比較例です。普通のDROPでも無条件にごみ箱へ残る保証はありません。CASCADE CONSTRAINTSは参照FKを削除して保護を失わせ、子表を削除する意味ではありません。PURGEはFlashback Drop不可で、バックアップ復旧の全方式が不可能という意味ではありません。4文を連続実行せず、制約解除をエラー突破の手順にしないでください。
-- 普通に削除(ごみ箱に入る)
DROP TABLE emp;
-- 外部キー参照ごと削除
DROP TABLE dept CASCADE CONSTRAINTS;
-- 完全削除(復元不可)
DROP TABLE emp PURGE;
-- 参照と領域を同時に解放
DROP TABLE dept CASCADE CONSTRAINTS PURGE;
誤って削除したテーブルの復元(Oracle)
PURGEを付けないことは復旧の十分条件ではありません。recycle binの対象・設定、領域回収で消えていないこと、必要な権限、同名の現存表や複数の削除履歴を確認します。TO BEFORE DROPはSYSTEM以外のローカル管理表領域にあった対応表が対象です。同名の履歴は最新の対象が選ばれ、別名復旧やシステム生成名による対象識別も必要になります。
Flashback Dropで全依存が元通りになるとは限りません。bitmap join/domain索引とmaterialized view logは一緒に復旧できず、参照整合性制約も復旧しません。戻る索引・トリガ・制約の名前もrecycle bin名となり得ます。表だけでなく定義・依存・権限とアプリの整合性まで確認してください。通常のROLLBACKやTRUNCATEした行の復旧とは別の機能です。
旧教材は読取・復旧・消去を混在させています。SELECTだけが一覧確認で、FLASHBACKは変更処理です。2つのFLASHBACKは独立した選択肢で、対象残存・権限・名前等が条件です。末尾PURGE RECYCLEBINは復旧手順ではなく復旧候補を消す破壊操作なので実行しないでください。復旧成功を保証するコードではありません。
-- ごみ箱の中身を確認
SELECT object_name, original_name, droptime FROM RECYCLEBIN;
-- テーブルを直前の状態に復元
FLASHBACK TABLE emp TO BEFORE DROP;
-- 復元先の名前を変えたい場合
FLASHBACK TABLE emp TO BEFORE DROP RENAME TO emp_restored;
-- ごみ箱を空にする
PURGE RECYCLEBIN;
TRUNCATE / DELETE との違い
次表はOracle 19cの通常表を対象とした比較です。外部表のDROPはDB内のメタデータのみを削除し、外部の実データは削除しません。DROPでごみ箱に残る領域は他のobjectへ直ちに解放されずquotaにも算入されます。所有schemaと権限を確認し、表の所有者でない場合はDROP ANY TABLE等の前提を確認します。権限追加を勧める手順ではありません。
| SQL | 定義 | データ | ロールバック | 処理時間・負荷(固定順位ではない) |
|---|---|---|---|---|
DROP TABLE | 削除 | 削除 | 通常のROLLBACK不可(Oracle通常表DDL) | 依存・待機・対象次第 |
TRUNCATE TABLE | 残る | 全行削除(領域扱いは指定等による) | 通常のROLLBACK不可(Oracle通常表DDL) | 行削除より効率的な場合があるが、待機・負荷次第 |
DELETE FROM ... | 残る | 削除 | 未COMMITの同一transaction等の条件下で可能 | 対象行・索引・トリガ・待機次第 |
注意点
- Oracle 19cの通常表DDLは構文上正しいDDLの前と成功後に暗黙COMMITがあり、失敗しても先行DMLが戻るとは保証しない。通常のROLLBACK不可。private temporary tableのDROPが既存transactionをCOMMITしない例外は別。製品共通の取消規則ではなく、PostgreSQL等のtransaction内DDLへ一律転用しない
- 外部キー参照で拒否されたら削除を中止し、業務上必要な整合性保護と依存を確認する。OracleのCASCADE CONSTRAINTSは参照制約を削除し、子表そのものは削除しない。PostgreSQLのCASCADEは依存ビュー等も削除し得る。子表削除や制約解除をエラーの自動対処にしない
PURGEはFlashback Dropの候補を残さない。事前バックアップの存在だけでは復元を保証せず、対象範囲・時点・整合性・復元手順の検証が必要- Oracleでは依存ビュー・プログラム等は無効化され得る。シノニムは名前解決先を失うため、すべての依存が同じINVALID状態になるとは扱わない。表のobject権限も失われ、同名表を再作成しただけで元の依存・権限が戻るわけではない
関連記事
公式資料と確認範囲
2026-10-27にOracle 19cの公式資料を照合しました。掲載SQLは独立した教材で、Oracleでの実行・復旧・ロック・性能は未検証です。設定変更・権限追加やschema変更を伴う診断手順ではありません。
- Oracle 19c DROP TABLE:対象・権限・CASCADE CONSTRAINTS・PURGE
- Oracle 19c FLASHBACK TABLE:TO BEFORE DROPの条件と復旧できない依存
- Oracle 19c COMMIT:DDL前後の暗黙COMMIT
- Oracle 19c DROP INDEX:所有権とONLINEの対象制限
- Oracle 19c constraint:索引の再利用と整合性保護
- Oracle 19c ALTER TABLE:KEEP INDEX・DROP INDEXと参照FK
- Oracle 19c CREATE INDEX:INVISIBLEでもDML保守は継続
- Oracle 19c ALTER INDEX:可視性とUNUSABLEの区別
- Oracle 19c DBA_INDEXES:定義・状態の一覧
- Oracle 19c Licensing Information:AWR等の利用条件
- PostgreSQL 18 DROP TABLE:依存objectとCASCADE
- MySQL 8.4 DROP TABLE:比較構文
- SQL Server DROP TABLE:IF EXISTSと対象指定
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスのソフト一覧|Blender・Metasequoiaと用途別の選び方
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Visual Studio「デザイナーを表示できません」エラーの原因と対処 2026-10-28 12:06:00
- SSH 認証に失敗しました。再試行してください の対処 2026-10-28 12:06:00
- SSH2 秘密鍵の読み込みに失敗しました の原因と対処 2026-10-28 12:06:00
- TeraTerm のよくあるエラーと対処法完全ガイド — Connection refused / 2026-10-28 12:06:00
- Visual Studio エラー一覧|コンパイルエラー・警告の確認方法と対処 2026-10-28 11:39:57
- Whitelabel Error Page の原因と消し方|Spring Boot のエラーページ 2026-10-28 11:39:57
- Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法 2026-10-28 11:39:57
- SQL WHERE 句完全ガイド 2026-10-28 11:39:57
- SQL JOIN 完全ガイド (INNER/LEFT/RIGHT/FULL OUTER) 2026-10-28 11:39:57
- tomcat の起動 / 停止ログと catalina.log・catalina.out の違い 2026-10-28 10:24:23
- Tomcat の起動確認方法 5 つ|localhost:8080・ポート・プロセス・ログ 2026-10-28 10:24:23
- Oracle 19c COMMITの使い方: 暗黙コミット・自動確定・応答不明時の確認 2026-10-28 09:59:09
- Oracle 19c DELETE文|削除対象の確認・COMMIT前の判断・ROLLBACKの条件 2026-10-28 09:59:09
- Oracle 19c INSERT文|INSERT ALL・SELECT・RETURNINGとMERGEの使い分け 2026-10-28 09:59:09
- Oracle 19cのトランザクション制御|COMMIT・ROLLBACK・分離レベルと接続設定 2026-10-28 09:59:09