Comment faire pour calculer une valeur de la colonne dans oracle 10g?
create table ord_tbl
(
ord_id number(10) primary key,
ord_name varchar2(20),
quantity number(20),
cost_per_item number(30),
total_cost number(30)--This colm shud be (quantity*cost_per_item),
ord_date date
)
Alors quand j'ai insérer des lignes, alors la total_cost " doit obtenir automatiquement généré et inséré dans une table
- Je dirais: ne pas mettre "total_cost" dans le tableau, car il s'agit tout simplement calculée à partir d'autres colonnes de la ligne. Par ailleurs, vous aurez probablement changer votre esprit sur la façon de calculer le "coût total" de toute façon.
Vous devez vous connecter pour publier un commentaire.
10g ne dispose pas de cette fonctionnalité. Au lieu de cela, utilisez une vue de:
La solution serait d'avoir la colonne dans la table pour maintenir la valeur à l'aide d'un déclencheur, à la fois pour les mises à jour et des inserts. Je suggère l'utilisation de la vue, parce que le maintien de la déclencheurs ajoute beaucoup de frais de maintenance.
MODIFIER (par Jason):
En 11g, vous pouvez créer une colonne virtuelle dans la définition de la table.
Comme Gordon Linoff répondu, vous pouvez créer une vue. Alternativement, vous pouvez créer un déclencheur et de stocker la valeur réelle:
L'avantage de stocker les données, c'est que vous pouvez y accéder plus rapidement et d'index si vous en avez besoin. L'inconvénient est que vous stockez des données redondantes (elle peut être calculée à l'exécution) et il nécessite plus d'espace de stockage.
Je vous conseille d'utiliser la vue à la première, et seulement de commencer à stocker la valeur dans la table si vous avez besoin de cette "mise en cache" version pour la performance.