Materialized View(物化视图)
实践案例
select * from DWD_FACTORY t;
CREATE TABLE CEC_FACTORY_TEST
AS
SELECT * FROM DWD_FACTORY;
CREATE MATERIALIZED VIEW LOG ON CEC_FACTORY_TEST INCLUDING NEW VALUES ;
CREATE MATERIALIZED VIEW mv_CEC_FACTORY_TEST BUILD IMMEDIATE REFRESH FAST
START WITH to_date( '2019-05-30 08:00:00' , 'yyyy-mm-dd hh24:mi:ss' )
NEXT SYSDATE+ 1 / 24
AS SELECT * FROM CEC_FACTORY_TEST;
CREATE TABLE mv_CEC_FACTORY_TEST_trigger AS
SELECT * FROM CEC_FACTORY_TEST;
ALTER TABLE CEC_FACTORY_TEST ADD ( DML_FLAG VARCHAR2( 8 ) ) ;
ALTER TABLE mv_CEC_FACTORY_TEST_trigger ADD ( DML_FLAG VARCHAR2( 8 ) ) ;
CREATE OR REPLACE TRIGGER Tri_CEC_FACTORY_TEST
AFTER INSERT OR UPDATE OR DELETE ON CEC_FACTORY_TEST
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
BEGIN
CASE
WHEN inserting THEN
INSERT INTO mv_CEC_FACTORY_TEST_trigger
VALUES ( :NEW. site,
:NEW. factory,
:NEW. description,
:NEW. code,
:NEW. object_rrn,
:NEW. org_rrn,
:NEW. is_active,
:NEW. interface_time
, 'insert'
) ;
WHEN updating THEN
INSERT INTO mv_CEC_FACTORY_TEST_trigger
VALUES ( :NEW. site,
:NEW. factory,
:NEW. description,
:NEW. code,
:NEW. object_rrn,
:NEW. org_rrn,
:NEW. is_active,
:NEW. interface_time
, 'update'
) ;
WHEN deleting THEN
INSERT INTO mv_CEC_FACTORY_TEST_trigger
VALUES ( :OLD. site,
:OLD. factory,
:OLD. description,
:OLD. code,
:OLD. object_rrn,
:OLD. org_rrn,
:OLD. is_active,
:OLD. interface_time
, 'delete'
) ;
END CASE ;
EXCEPTION
WHEN OTHERS THEN
RAISE;
END Tri_CEC_FACTORY_TEST;
SELECT * FROM CEC_FACTORY_TEST;
DELETE FROM CEC_FACTORY_TEST WHERE FACTORY IN ( 'ARRAY' , 'CF' ) ;
COMMIT ;
TRUNCATE TABLE CEC_FACTORY_TEST;
INSERT INTO CEC_FACTORY_TEST SELECT * FROM DWD_FACTORY;
COMMIT ;
UPDATE CEC_FACTORY_TEST SET DESCRIPTION= '阵列(TFT)' WHERE FACTORY= 'ARRAY' ;
COMMIT ;
UPDATE CEC_FACTORY_TEST SET DESCRIPTION= '彩膜(CF)' WHERE FACTORY= 'CF' ;
COMMIT ;
UPDATE CEC_FACTORY_TEST SET DESCRIPTION= '成盒(Cell)' WHERE FACTORY= 'CELL' ;
COMMIT ;
UPDATE CEC_FACTORY_TEST SET DESCRIPTION= '模组(SL)' WHERE FACTORY= 'SL' ;
COMMIT ;
UPDATE CEC_FACTORY_TEST SET DESCRIPTION= '模组(OC)' WHERE FACTORY= 'OC' ;
COMMIT ;
SELECT * FROM CEC_FACTORY_TEST;
CALL dbms_mview. refresh( 'mv_CEC_FACTORY_TEST' ) ;
SELECT * FROM mlog$_CEC_FACTORY_TEST;
SELECT * FROM MV_CEC_FACTORY_TEST_TRIGGER;