2016-06-30 8 views
0

J'utilise Oracle 11g express et sqldeveloper 4.0.3.In ma base de données que j'ai une table appelée TABLE1 comme ceci:Base de données Oracle comment définir la fonction de valeur permanente à la colonne?

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

J'ai aussi un programme java qui insère des valeurs sur la table l'ID, A, B. Donc je veux que la base de données se souvienne comme une fonction pour ajouter la colonne A et B et la mettre en C et ne pas le faire manuellement sur la requête sur le développeur: UPDATE TABLE1 SET C = A + B O C C EST NULL;

Comment cela peut-il être fait?

+0

On dirait que vous voulez colonne C une colonne virtuelle plutôt qu'une colonne physique. Pouvez-vous supprimer la colonne physique existante C et créer une nouvelle colonne virtuelle? Si vous voulez une colonne physique, vous devez créer un déclencheur qui calcule la valeur C. –

+0

Je ne sais pas comment écrire le code de déclenchement pour mon exemple. – asd32

+0

Vous souciez-vous de savoir si vous vous retrouvez avec une colonne physique ou une colonne virtuelle? Je suppose que vous voulez une colonne virtuelle. Je suis heureux de vous montrer comment si vous êtes heureux de laisser tomber la colonne physique existante. Si vous avez besoin de cette colonne physique, je suis heureux de vous aider avec un déclencheur. Cependant, je ne sais pas quelles sont vos contraintes, alors je ne sais pas si l'une ou l'autre de ces options vous convient. –

Répondre

2

Je suppose que vous voulez supprimer la colonne physique existante C et de créer une nouvelle colonne virtuelle C

ALTER TABLE table1 
    DROP COLUMN c; 

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

Oui c'est ça.Merci beaucoup. – asd32