Создать материализованное представление с НЕНУЛЕВЫМ столбцом? (прямая ссылка на внешнюю таблицу)

#oracle #constraints #materialized-views #dblink #notnull

#Oracle #ограничения #материализованные представления #прямая ссылка #notnull

Вопрос:

Я создал материализованное представление, которое синхронизирует данные из внешней системы (по 5-секундному расписанию; через dblink).

  • Основной системой, имеющей MV, является Oracle 18c.
  • Внешней системой с исходными данными / dblink является Oracle 19c

 create materialized view log on my_external_sys.workorder with rowid;  --external system 

create materialized view my_primary_sys.wo_mv --primary system 
build immediate 
refresh force 
on demand 
start with sysdate next sysdate   (5/(60*60*24))
as
select
    cast(workorderid as number(38,0)) as objectid,
    wonum,
    status,
    --other fields
    longitudex,
    latitudey
from
    my_external_sys.workorder@gistomax --dblink
 

Материализованный вид работает так, как ожидалось.

Однако теперь я понимаю, что моя основная система предъявляет особые требования к своим таблицам (или, в данном случае, MVS).

  • В tables / MVs должен быть столбец с именем OBJECTID, который имеет ограничение NOT NULL.
  • Дополнительная информация здесь: SDO_GEOMETRY и ArcGIS

Вопрос:

Есть ли способ создать материализованное представление (через dblink на внешнюю базу данных / таблицу), в котором есть столбец с константой NOT NULL?

Ответ №1:

Я допустил ошибку, предположив, что alter table это не будет работать на MV.

Но это полностью работает.

 alter table my_primary_sys.wo_mv modify objectid not null;
 

Это было просто.