Oracle
 sql >> Database >  >> RDS >> Oracle

Come calcolare un valore di colonna in Oracle 10g?

10g non ha questa funzione. Invece, usa 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;

L'alternativa sarebbe avere la colonna nella tabella per mantenere il valore utilizzando un trigger, sia per gli aggiornamenti che per gli inserimenti. Suggerirei di utilizzare la vista, perché il mantenimento dei trigger aggiunge molto sovraccarico di manutenzione.

EDIT (di Jason):

In 11g puoi creare una colonna virtuale nella definizione della tabella.

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
)