Мне нужно извлечь уникальные значения столбца, который является частью первичного ключа из таблицы, в материализованное представление. Я могу создать материализованное представление, если вы используете «refresh complete», но не повезло, когда пытаетесь использовать «обновить быстро на фиксации». Может ли кто-нибудь указать, пропустил ли я что-либо, или Oracle не поддерживает такое действие.Невозможно установить атрибут обновления ON COMMIT при создании материализованного представления, содержащего частичный первичный ключ в Oracle
Ниже приведен пример вывода. Благодарю.
SQL> create table TEST(col1 number, col2 number, col3 varchar(32), CONSTRAINT test_pk Primary Key (col1, col2));
Table created.
SQL> create materialized view test_mv build immediate refresh fast on commit as select distinct col2 from test;
create materialized view test_mv build immediate refresh fast on commit as select distinct col2 from test
*
ERROR at line 1:
ORA-12054: cannot set the ON COMMIT refresh attribute for the materialized view
SQL> create materialized view test_mv build immediate refresh complete as select distinct col2 from test;
Materialized view created.
SQL> drop materialized view test_mv;
Materialized view dropped.
SQL> create materialized view log on test;
Materialized view log created.
SQL> create materialized view test_mv build immediate refresh fast on commit as select distinct col2 from test;
create materialized view test_mv build immediate refresh fast on commit as select distinct col2 from test
*
ERROR at line 1:
ORA-12054: cannot set the ON COMMIT refresh attribute for the materialized view
Вы правы, что разные препятствуют этому. Но, как ни странно, вы можете создать его с помощью GROUP BY, и Oracle сможет использовать это для запросов 'DISTINCT'. См. Мой ответ для деталей. –