- ベストアンサー
truncate文を発行したときに
データベースのすべての表をけしたくてSQLPLUSでTRUNCATEしようとするんですが、 表には使用可能な外部キーによって参照される一意キー/主キーが含まれています。 というエラーメッセージがでることがあります。 DBA STUDIOですとテーブル名を選択してDELキーですんなり消せるのですが・・・。 キーの参照設定とかを消したりすればよいのでしょうか? 具体的には、TRUNCATEを行う前にどのようなSQLPLUSコマンドを打てばいいのでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
alter table テーブル名 disable constraint 参照整合性制約名; でdisableにしてからtruncateで実行できるはずです。 終わったら alter table テーブル名 enable constraint 参照整合性制約名; でenableにします。 #すべての表を消すのであればUSER_CONSTRAINTSのCONSTRAINT_TYPEが'R'(参照整合性)ですべての制約を取得してdisableにすればよいと思います。 >DBA STUDIOですとテーブル名を選択してDELキーですんなり消せるのですが・・・。 DBA STUDIOはおそらくdeleteをしていると思います。
その他の回答 (1)
- ppg-2
- ベストアンサー率39% (77/193)
回答No.1
通常、外部参照しているほうを先にtruncateすればいいと思います。 相互参照になっている場合はindexなどの制限をdropしたあと削除しcreateする方法でしょうか。
お礼
>DBA STUDIOはおそらくdeleteをしていると思います。 有無をいわさず消してくれるDELETEというSQL文があるということでしょうか?