事象
TRUNCATE TABLE テーブル;
しようとすると、
ORA-02266
のエラーが出て、TRUNCATE できない。
原因
TRUNCATE しようとした TABLEが、外部キーによって参照されている為。
以下は正しくない説明かもだが、外部キーの親テーブル的な役割をになっている為、削除してしまうと、子テーブルが参照できる外部キーが無くなってまうため。
対応
外部キーの制約を一時的に無効化する
-- 外部キー制約の無効化
ALTER TABLE 子テーブル名 DISABLE CONSTRAINT 外部キー制約名;
↑の、「子テーブル名」って書いたのは、外部キーの参照元に当たる側のテーブル名。
=参照先(親テーブル)ではない
=(TRUNCATE TABLE 対象のテーブルではない)
外部キー制約名 は、通常だったら、「FK_●●●」とか「●●●_FK」みたいな名前になってるはず。
↓
TRUNCATE TABLE 対象のテーブル名;
する
成功する。
↓
外部キーの制約を有効化する(もとに戻す)
-- 外部キー制約の有効化
ALTER TABLE 子テーブル名 ENABLE CONSTRAINT 外部キー制約名;
参考にしたサイト
ありがとうございました!
コメント