У меня есть три таблицы, назовем их GRANDPARENT
, PARENT
и CHILD
.PARENT
имеет столбец FK для PK GRANDPARENT
, а CHILD
имеет столбец FK для PK PARENT
.Пока все хорошо.
Теперь я хочу настроить представление, содержащее всю информацию в 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;
Не слишком сложно.Но вот сложная часть: я хочу иметь возможность INSERT
или UPDATE
для этого представления, и чтобы все соответствующие данные были записаны в таблицу CHILD
, а значение GRANDPARENT_ID
, если оно есть, следует игнорировать.
Я немного погуглил, и, очевидно, должна быть возможность настроить обновляемое представление, например, «с помощью триггеров», но оно нигде не объясняет, что я должен делать стриггеры для достижения этого эффекта.Я думаю, что знаю более или менее, как обращаться с делом INSERT
, но как насчет дела UPDATE
?UPDATE
операторы имеют WHERE
предложения и могут содержать или не содержать произвольные столбцы в таблице.
Например, как мне использовать триггер для преобразования чего-то вроде update CHILD_VIEW set (blah blah blah) where ID = 5
в update CHILD set (blah blah blah excluding GRANDPARENT_ID) where ID = 5