после миграции системы / базы данных мы изменили центральную таблицу, которая использовалась для взаимодействия с 15 различными системами. Мы использовали эту миграцию для добавления и удаления нескольких полей в этой таблице.
Чтобы поддерживать прямую совместимость с интерфейсными системами (т. Е. Нужно только изменить ссылку на базу данных), было создано представление, в котором отображаются те же столбцы, что и в старой таблице. Однако некоторые из этих столбцов только эмулируются, поэтому представление содержит конструкции, подобные этим:
(...)
CREATE OR REPLACE VIEW STAFF_DATA_COMPAT AS
SELECT
NVL(knownas_surname,surname) as surname,
first_name
middle_name as mid-name
NULL as ni,
NULL as home_tel_no,
(...)
Очевидно, что это представление не является обновляемым .
Я понимаю, что вам нужны триггеры INSTEAD OF для всех операторов DML (вставка, обновление, удаление).
Я вижу, что триггер INSTEAD OF INSERT должен быть достаточно простым (просто вставьте поле NEW.field в реальную таблицу, где это уместно, и игнорируя остальные).
Но на самом деле вопрос: Как написать соответствующие триггеры INSTEAD OF UPDATE / DELETE? Например, как мне принять предложение WHERE исходного оператора DELETE? Есть ли что-то еще, о чем я должен беспокоиться, есть ли побочные эффекты при использовании этих триггеров?
Btw. Это Oracle 11g.