我有这个事实表:
CREATE TABLE FACTPRODUCTSALES (
TRANSACTIONID NUMBER
GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 )
PRIMARY KEY,
SALESINVOICENUMBER INT NOT NULL,
SALESDATEKEY NUMBER CONSTRAINT SALES_KEY_FK REFERENCES DIMDATE (DATEKEY),
SALESTIMEKEY NUMBER CONSTRAINT SALESTIME_KEY_FK REFERENCES DIM_TIME (TIMEKEY),
STOREID NUMBER NOT NULL CONSTRAINT STORE_ID_FK REFERENCES DIMSTORES (STOREID),
CUSTOMERID NUMBER NOT NULL CONSTRAINT CUSTOMER_ID_FK REFERENCES DIMCUSTOMER (CUSTOMERID),
PRODUCTID NUMBER NOT NULL CONSTRAINT PRODUCT_ID_FK REFERENCES DIMPRODUCT (PRODUCTKEY),
SALESPERSONID INT NOT NULL CONSTRAINT SALESPERSON_ID_FK REFERENCES DIMSALESPERSON ( SALESPERSONID ),
QUANTITY FLOAT,
SALESTOTALCOST INT as (DIMPRODUCT.PRODUCTSALESCOST * QUANTITY),
PRODUCTACTUALCOST INT as (DIMPRODUCT.PRODUCTACTUALCOST * QUANTITY),
DEVIATION FLOAT
);
正如你在SALESTOTALCOST
和PRODUCTACTUALCOST,
中看到的,我希望每次在这个表中插入一些东西时,根据DIMPRODUCT.PRODUCTSALESCOST
和DIMPRODUCT.PRODUCTACTUALCOST
中的值自动计算它们的值,这取决于用户在DIMPRODUCT
字段中插入的ID,当然,这段代码不会工作。
这可能吗?
1条答案
按热度按时间4uqofj5v1#
一般来说,不要这样做。
或者:
1.创建一个
VIEW
,并通过连接两个表在视图中生成总计。1.如果你想具体化数据,那么创建一个
MATERIALIZED VIEW
。1.使用(复合)触发器在修改依赖列时更新表。
您没有提供
DIMPRODUCT
表的详细信息,也没有提供这两个表之间的关系,因此无法提供代码。