0
プライマリ・キー制約を削除するには、テーブルを変更する必要がありますが、唯一の問題は別のシステムによってテーブルが生成され、だから回避策として、私は動作するはずだと思う以下のスクリプトを作成しましたが、そうではありませんので、誰でも私が動作する別のスクリプトを書くのを助けてください。選択条件に基づいてoracleのテーブル・スクリプトを変更します
ALTER TABLE temp
MODIFY CONSTRAINT (select constraint_name
FROM all_constraints
WHERE owner like '%tempUser%' and
table_name like '%temp%' and
constraint_type = 'P'
)
DISABLE;
実行しようとすると次のエラーが発生します。
SQLエラー:ORA-14006:無効なパーティション名 14006. 00000 - 「無効なパーティション名」 *原因:フォームのパーティション名が期待 ではなく、存在しています。 *処置:適切なパーティション名を入力してください。
推奨リンクに基づいて次のコードを試しましたが、エラーなしで実行されますが、制約は削除されません。
BEGIN
FOR c IN
(SELECT c.owner, c.table_name, c.constraint_name
FROM all_constraints c
where owner like '%tempUser%' and table_name like '%temp%' and constraint_type = 'P')
LOOP
dbms_utility.exec_ddl_statement('alter table ' || c.table_name || ' modify CONSTRAINT ' || c.constraint_name || ' disable ');
END LOOP;
END;
/
このスクリプトは動作しません。それはエラーを出すのですか?これは答えを見つけるのに役立ちます。 – Steven
[Oracleのすべてのテーブル制約を無効にする]の可能な複製(http://stackoverflow.com/questions/128623/disable-all-table-constraints-in-oracle) – mustaccio