Триггер теряется при редактировании представления при предоставлении привилегии
Я столкнулся со странным явлением с Oracle EBR.
В нашей базе данных каждый вечер выполняется задание, которое предоставляет привилегии группе для всех таблиц и представлений определенной схемы. После выполнения этого скрипта мы потеряли несколько триггеров в текущей версии базы данных по умолчанию.
Я мог бы исследовать это и сделать несколько шагов по воспроизведению.
CREATE OR REPLACE FORCE EDITIONING VIEW v1 AS SELECT * FROM v1_tbl;
CREATE OR REPLACE TRIGGER TRG_V1 BEFORE
INSERT ON v1 FOR EACH row BEGIN
SELECT seq_v1.nextval INTO :new.cid FROM dual;
END;
/
Create edition e2;
GRANT USE ON EDITION e2 to public;
ALTER DATABASE DEFAULT EDITION = e2
--Reconnect.
GRANT SELECT v1 TO USER;
Результатом этого кода является то, что представление редакции v1 было воссоздано в редакции E2, но триггер остается в ORA$BASE, в результате чего триггер исчезает в текущей редакции E2.
Согласно документации ЕБР триггеры должны сохраняться при редактировании представлений после воссоздания.
Мы уже открыли билет на поддержку оракула, но до сих пор ничего полезного не было им возвращено.
Кто-то здесь тоже испытал это и знает, является ли это ошибкой или мы просто неправильно ее используем?
1 ответ
Хорошо. Это немного странно. Когда я вставляю что-то в представление редакции, триггер обновляется до последней редакции и работает просто отлично.
Я только что проверил SQL Developer и там триггер не виден в последней версии, пока он не был использован и перекомпилирован.