2016-06-30 11 views
0

私はこのようなTABLE1と呼ばれるテーブルを持つOracle 11gのエクスプレスとのsqldeveloper 4.0.3.In私のデータベースを使用しています:Oracleデータベース永続的な値の関数を列に設定する方法は?

ID A B C 
    1 3 2 null 
    2 1 2 null 

私もテーブルの上にIDを値を挿入するJavaプログラムを持って、Aを、 B. だから私は、データベースがカラムAとBを追加し、それをCに設定し、それを手動で実行しないように、データベースの機能を記憶しておきたいと思っています: UPDATE TABLE1 SET C = A + B WHERE C IS NULL;

どうすればできますか?

+0

を作成したいということです。既存の物理列Cを削除して新しい仮想列を作成できますか?物理的な列が必要な場合は、Cの値を計算するトリガーを作成する必要があります。 –

+0

私の例のトリガコードの記述方法はわかりません。 – asd32

+0

物理的な列か仮想的な列かどうかは気になりますか?私の推測では、仮想列が必要です。既存の物理的な列を削除してもよければどうすればいいのかをお見せします。その物理的な列が必要な場合は、トリガーでお手伝いします。あなたの制約が何であるかわからないので、これらのオプションのどちらかがあなたに受け入れられるかどうかはわかりません。 –

答えて

2

私の推測では、既存の物理的な列Cをドロップすると、あなたは、列Cが仮想列ではなく、物理列になりたいようですね新しい仮想列C

ALTER TABLE table1 
    DROP COLUMN c; 

ALTER TABLE table1 
    ADD c GENERATED ALWAYS AS (a+b); 
+0

はい、それです。ありがとうございました。 – asd32

関連する問題