0

私は要件に取り組んでいます。

テーブルが1つあります。このテーブルから行を削除したいのですが、削除できません。

1.このテーブルは外部キー関係を介して79テーブルによって参照されます2.これらの79テーブルのそれぞれは他の100のテーブルによって参照されます

そのようなツリー構造を想像できるので、下から始めてTOPに到達する必要があります。SQLを介して行う必要があります。

だから私はどこから始めるべきですか?私は一時的なテーブルまたは私が役立つことができる任意のアプローチを行うことができる何かを作成する必要がありますか?

注:カスケード削除は許可されていません

私はsysテーブルにアクセスできないかもしれません..便利なアプローチはありますか?私はオラクル10gを使用しています

4

2 に答える 2

2

参照: http://www.techonthenet.com/oracle/foreign_keys/disable.php

ALTER TABLE table_name
disable CONSTRAINT constraint_name;

このような手順を実行した場合の結果と、それが他のデータ/アプリケーション機能に与える影響を必ず理解してください。

また、明らかでない場合は、後で制約を有効にしてください

ALTER TABLE table_name
enable CONSTRAINT constraint_name;
于 2013-01-10T16:09:09.310 に答える
0

次のクエリ (sys テーブルへのアクセスは必要ありません) を使用して、テーブルのすべての外部キーとそれに対応する主キーを取得できます。これを使用して、ツリーを通過し、すべての親エントリを削除するある種の再帰関数を構築できます。

select uc.constraint_name, ucc.table_name, ucc.column_name from
user_constraints uc
left join user_cons_columns ucc on (uc.r_constraint_name = ucc.constraint_name)
where uc.table_name = 'TABLENAME'
and uc.constraint_type = 'R'
于 2013-01-10T16:16:12.487 に答える