#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;
Это было просто.