CREATE TABLE TEST (FIELD1  INTEGER, FIELD2  INTEGER);
CREATE VIEW TEST_VIEW AS SELECT * FROM TEST T WHERE T.FIELD2 IS NULL;

теперь посмотрите зависимости - для поля FIELD1 её нет, а для поля FIELD2 есть


Со второй проблемой надо покумекать как тест написать, потому как то ли после B/R, то ли после перекомпилляции зависимости опять стали показываться.


Второй пример показывает как исчезает зависимость для таблицы TEST:

на момент выполнения первого примера у таблицы есть одна зависимость - 
представление. Теперь берём и добавляем на представление триггер, например:

CREATE TRIGGER TEST_VIEW_BIU0 FOR TEST_VIEW
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
BEGIN
 IF (INSERTING) THEN
   INSERT INTO TEST VALUES (NEW.FIELD1, NEW.FIELD2);
 ELSE IF (UPDATING) THEN
   UPDATE TEST SET FIELD1 = NEW.FIELD1 WHERE FIELD2 = OLD.FIELD2;
 ELSE
   DELETE FROM TEST WHERE FIELD2 = OLD.FIELD2;
END

закомитили.
Потом берём в эксперте коментируем тело триггера, перекомпиллируем:

CREATE TRIGGER TEST_VIEW_BIU0 FOR TEST_VIEW
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
BEGIN /*$$IBE$$ IF (INSERTING) THEN
   INSERT INTO TEST VALUES (NEW.FIELD1, NEW.FIELD2);
 ELSE IF (UPDATING) THEN
   UPDATE TEST SET FIELD1 = NEW.FIELD1 WHERE FIELD2 = OLD.FIELD2;
 ELSE
   DELETE FROM TEST WHERE FIELD2 = OLD.FIELD2;
$$IBE$$*/ POST_EVENT '$$IBE$$';
END

зависимость всё ещё есть.

Теперь берём и экспертом перекомпиллируем вьюху, смотрим зависимости у таблицы 
- нефига нету.

PS Может это и эксперта проблема - я не знаю. Решил пока сюда написать.

Ответить