Mittwoch, Oktober 05, 2005

Materialized View: Fast Refresh on Commit

Hier mal eine minimale Definition einer MV mit Fast Refresh on Commit:

create table test1 (a number);

alter table test1 add constraint test1pk primary key (a);

CREATE MATERIALIZED VIEW LOG ON test1 WITH PRIMARY KEY, ROWID INCLUDING NEW VALUES;

create materialized view test1_mv 
refresh fast on commit 
as 
select * 
  from test1;

select * 
  from test1;

no rows selected

select * 
  from test1_mv;

no rows selected

insert into test1 values (1);

1 row created.

select * 
  from test1;

A
----------
1

1 row selected.

select * 
  from test1_mv;

no rows selected

commit;

Commit complete.

select * 
  from test1_mv;

A
----------
1

1 row selected.

Beim Commit werden die Änderungen an die MV propagiert. Erforderlich sind ein Primary Key (da könnte man natürlich auch einen synthetischen Key verwenden) und ein View Log, das alle Änderungen der Basis-Tabelle protokolliert.    

Keine Kommentare:

Kommentar veröffentlichen