У меня есть три таблицы, назовем их GRANDPARENT
, PARENT
и CHILD
. PARENT
имеет столбец FK для GRANDPARENT
PK, а CHILD
имеет столбец FK для PARENT
PK. Все идет нормально.
Теперь я хочу настроить представление, содержащее всю информацию из CHILD
, а также PK из GRANDPARENT
. Итак:
CREATE VIEW CHILD_VIEW
(
ID,
PARENT_ID,
OTHER_STUFF,
GRANDPARENT_ID
)
AS
SELECT
C.ID,
C.PARENT_ID,
C.OTHER_STUFF,
C.GRANDPARENT_ID
FROM CHILD C
join PARENT P on P.ID = C.PARENT_ID;
Не слишком сложно. Но вот сложная часть: я хочу иметь возможность ВСТАВИТЬ
или ОБНОВИТЬ
в это представление и записать все соответствующие данные в таблицу CHILD
и значение GRANDPARENT_ID
, если оно есть, следует игнорировать.
Я немного погуглил и, по-видимому, должна быть возможность настроить обновляемое представление, подобное этому, «используя триггеры», но это нигде не объясняет, что я должен делать с триггерами для достижения этой цели. эффект. Я думаю, что более или менее знаю, как обращаться со случаем INSERT
, но как насчет случая UPDATE
? Операторы UPDATE
имеют предложения WHERE
и могут содержать или не содержать любые произвольные столбцы в таблице.
Например, как мне использовать триггер для преобразования чего-то вроде обновить набор CHILD_VIEW (бла-бла-бла), где ID = 5
в обновить набор CHILD (бла-бла-бла, исключая GRANDPARENT_ID), где ID = 5
?