2011-06-21 6 views
1

テーブルがあり、データがあります。このテーブルは他のテーブルと1:Nの関係にあり、この他のテーブルには1:Nの関係もあります。データとリレーションを含むテーブルを再作成

いくつかの変更を加えてテーブルを再作成する必要があります。これまでのところ、同じ構造のテーブルを作成し、元のテーブルからデータをコピーしました。元のテーブルを削除し、新しいテーブルの名前を元の名前と一致します。

問題は、子レコードのために元のテーブルを削除できないことです。

この問題を解決するにはどうすればよいですか?あるいは、このような仕事のために他の方法がありますか?

+1

FK制約を削除するか、最初に子レコードを削除する必要があります。あなたはテーブル構造をどのように変更していますか?本当に新しいテーブルとして作成する必要がありますか? – StevieG

+0

はいrowdependenciesを持つテーブルを作成する必要があります。 – user256034

+1

ああ、私は、ALTER TABLEでそれらを設定することはできないので、正しいことをやっていることがわかります。その場合は、制約はなく、元のテーブルを削除し、新しいテーブルの名前を変更してから制約を再度有効にします。これは痛みのビットですが、その唯一の方法.. [this]を参照してください(http://stackoverflow.com/questions/4105368/how-can-i-determine-if-an-oracle-table-has- the-rowdependencies-option-set) – StevieG

答えて

1

次のようなもので、子テーブルから制約をドロップする最初の必要性:

ALTER TABLE <your child table> DROP CONSTRAINT <your constraint>; 

親を指している子テーブル上の制約を探します。

次に、古い親テーブルを削除し、名前を変更して、制約を再追加することができます。

関連する問題