SQL> select * from table1;
PRICES
----------
300
520
220
820
350
790
247
CREATE TABLE2 (DESCRIPT VARCHAR2(10), TOTALPRICES NUMBER(10) DEFAULT
(SELECT SUM(PRICES) FROM TABLE1);
我想要这样的东西
INSERT INTO TABLE2 VALUES ('TOTAL OF DAY');
SELECT * FROM TABLE2;
我希望显示它:
DESCRIPT TOTALPRICES
-------------- -----------
TOTAL OF DAY 3247
答案 0 :(得分:1)
实现此功能的方法很少,其中一种是使用行级别Trigger
。
但是,我建议您使用View
,因为仅存储可从另一个表生成的值并不总是值得拥有一个表。
创建视图
CREATE OR REPLACE VIEW v_table1 as select 'TOTAL OF DAY' as DESCRIPT
, SUM(prices) as TOTALPRICES
FROM Table1;
这使您可以简单地查询视图,并且将从基础表中生成值。
select * from v_table1;
如果您认为该视图的基础查询可能很慢,则可以将其转换为实例化视图。
触发器应该是您的最后选择。
CREATE OR REPLACE TRIGGER tr_table2 BEFORE INSERT ON Table2
FOR EACH ROW
BEGIN
SELECT SUM(PRICES) INTO :NEW.TOTALPRICES FROM Table1;
END;
/