Jednym ze sposobów radzenia sobie z tym byłoby utworzenie zmaterializowanego widoku głównej tabeli w lokalnej bazie danych, a następnie utworzenie ograniczenia integralności wskazującego na MV.
To działa. Ale może to prowadzić do pewnych problemów. Po pierwsze, jeśli kiedykolwiek będziesz musiał odświeżyć zmaterializowany widok, musisz wyłączyć ograniczenie przed zrobieniem tego. W przeciwnym razie Oracle nie będzie w stanie usunąć wierszy w MV przed wprowadzeniem nowych wierszy.
Po drugie, możesz napotkać opóźnienia. Na przykład powiedz, że dodajesz rekord do tabeli głównej w witrynie zdalnej. Następnie chcesz dodać rekord potomny do lokalnej tabeli. Ale MV jest ustawione na odświeżanie codziennie i to się jeszcze nie stało. Dostaniesz naruszenie klucza obcego, po prostu dlatego, że MV nie odświeżyło się.
Jeśli wybierzesz tę trasę, najbezpieczniejszym sposobem jest ustawienie wartości MV na szybkie odświeżanie przy zatwierdzaniu tabeli głównej. To będzie oznaczać, że DB Link będzie otwarty prawie przez cały czas. Będziesz mieć pracę administratora, jeśli kiedykolwiek będziesz musiał wykonać odświeżenie.
Ogólnie uważamy, że wyzwalanie jest łatwiejsze. W niektórych przypadkach po prostu zdefiniowaliśmy FK w naszym modelu logicznym, ale wdrożyliśmy go ręcznie, ustawiając codzienne zadanie, które będzie sprawdzać pod kątem naruszeń i personelu alarmowego. Oczywiście jesteśmy dość ostrożni, więc te alerty są niezwykle rzadkie.
Należy pamiętać, że tworzenie kopii zapasowych/przywracania obu baz danych może przerwać to "ograniczenie". –