sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo calcular un valor de columna en Oracle 10g?

10g no tiene esta característica. En su lugar, utilice una vista:

create table ord_tbl
(
ord_id number(10) primary key,
ord_name varchar2(20),
quantity number(20),
cost_per_item number(30),
ord_date date
);

create view vw_ord_tbl as
    select ord_id, ord_name, quantity, cost_perId, (quantity*cost_per_item) as total_cost, ord_date
    from ord_tbl;

La alternativa sería tener la columna en la tabla para mantener el valor usando un activador, tanto para actualizaciones como para inserciones. Sugeriría usar la vista, porque el mantenimiento de los disparadores agrega una gran cantidad de gastos generales de mantenimiento.

EDITAR (por Jason):

En 11g puede crear una columna virtual en la definición de la tabla.

create table ord_tbl (
    ord_id number(10) primary key,
    ord_name varchar2(20),
    quantity number(20),
    cost_per_item number(30),
    total_cost as (quantity*cost_per_item),
    ord_date date
)