2008年6月16日星期一

[z] 概要 参照整合性制約を一度にdisable/enableにする方法

http://yong.at.webry.info/200412/article_1.html
[Problem]
複数の表を exp して、単純にデータのみを imp したいのですが、外部キーが多数定義されており
ORA-02291: 整合性制約 (XXX.XXXX) に違反しました。親キーがありません。
というエラーが発生してしまいます。まず 関連する参照整合性制約を disable し、imp、
参照整合性制約を enable とするのはいいのですが、外部キーの数が多いので簡単な方法は
用意されていないでしょうか。
[Action]
Export、Importユーティリティによって、上記の問題を回避することは出来ません。
参照整合性制約の数が多いようであれば、以下のようなスクリプトを実行し、該当ユーザーが
持つ全ての制約をdisable、enableにするSQLスクリプトを作成し、実行してください。
下記手順にてお願い致します。

1 スクリプトを流す。 -> dis_const.sqlとen_const.sqlが作成される
以下がスクリプトの内容です。
-------
set echo off
set feedback off
set pagesize 0
spool dis_const.sql
prompt set echo on
prompt set termout on
prompt set feedback on
prompt spool dis_const.log
select 'alter table ' || table_name || ' disable constraint '
|| constraint_name || ';'
from user_constraints
where constraint_type='R';
prompt spool off
spool off

spool en_const.sql
prompt set echo on
prompt set termout on
prompt set feedback on
prompt spool en_const.log
select 'alter table ' || table_name || ' enable constraint '
|| constraint_name || ';'
from user_constraints
where constraint_type='R';
prompt spool off
spool off
-------
2 dis_const.sqlを実行
3 Import
4 en_const.sqlを実行

没有评论:

博客归档

neoedmund's shared items

我的简介

ZIP Code File