2017-08-23 31 views
1

私は外部キーを持たないoracle dbを持っています。すべてのテーブル関係はソフトウェアによって処理されます。例えば、customercodeは、主キーおよび列Order.ordercode(PK)とテーブルOrdercustomercodeは、外部キー制約を持たないOrder.customercodeCustomer.customercodeCustomer.NameとテーブルCustomerあります。今のところ、アプリケーションはすべてのトランザクションを処理し、データが一貫しているようにすべてのテーブル関係を処理します。これを適切なリレーショナルDBの実装に変更する必要があるため、Order.customercodeをテーブルCustomerのFKに変更する必要があります。データを失うことなくこれを行うためのsqlplusステートメント既存の列を外部キーに変更する

+1

;':あなたのデータがOKであると仮定すると、あなたはalter tableステートメントを使用することができますあなたは終わりました。うまくいけば、すでにorder.customercodeにインデックスがある場合は、それを追加する時です。 –

答えて

2

Oracleでは、外部キーを作成するとデータが失われることはありませんが、データが新しい制約に対応しない場合は失敗します。すべてのデータが一致しているならば、単に `テーブルの順序が制約ord_cust_fk外部キー(customercode)参照顧客(customercode)を追加、変更、問題はありません

ALTER TABLE order 
ADD CONSTRAINT order_customer_fk FOREIGN KEY (customercode) 
REFERENCES customer(customercode) 
関連する問題