• ベストアンサー

truncate文を発行したときに

データベースのすべての表をけしたくてSQLPLUSでTRUNCATEしようとするんですが、 表には使用可能な外部キーによって参照される一意キー/主キーが含まれています。 というエラーメッセージがでることがあります。 DBA STUDIOですとテーブル名を選択してDELキーですんなり消せるのですが・・・。 キーの参照設定とかを消したりすればよいのでしょうか? 具体的には、TRUNCATEを行う前にどのようなSQLPLUSコマンドを打てばいいのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

alter table テーブル名 disable constraint 参照整合性制約名; でdisableにしてからtruncateで実行できるはずです。 終わったら alter table テーブル名 enable constraint 参照整合性制約名; でenableにします。 #すべての表を消すのであればUSER_CONSTRAINTSのCONSTRAINT_TYPEが'R'(参照整合性)ですべての制約を取得してdisableにすればよいと思います。 >DBA STUDIOですとテーブル名を選択してDELキーですんなり消せるのですが・・・。 DBA STUDIOはおそらくdeleteをしていると思います。

msndance
質問者

お礼

>DBA STUDIOはおそらくdeleteをしていると思います。 有無をいわさず消してくれるDELETEというSQL文があるということでしょうか?

その他の回答 (1)

  • ppg-2
  • ベストアンサー率39% (77/193)
回答No.1

通常、外部参照しているほうを先にtruncateすればいいと思います。 相互参照になっている場合はindexなどの制限をdropしたあと削除しcreateする方法でしょうか。

関連するQ&A