Как настроить обновляемое представление с объединением в Firebird?

У меня есть три таблицы, назовем их GRANDPARENT, PARENTи CHILD. PARENTимеет столбец FK для GRANDPARENTPK, а CHILDимеет столбец FK для PARENTPK. Все идет нормально.

Теперь я хочу настроить представление, содержащее всю информацию из 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?

6
задан Mason Wheeler 22 March 2012 в 23:20
поделиться