Почему я не могу создать триггеры для объектов, принадлежащих SYS?
При попытке создать триггер с именем ghazal_current_bef_upd_row
:
create trigger ghazal_current_bef_upd_row
before update on ghazal_current
for each row
when (new.Rating < old.Rating)
begin
insert into ghazal_current_audit
(GhazalName,Old_Rating,New_Rating)
values
(:old.GhazalName,:old.Rating,:new.Rating);
end;
Я получаю следующую ошибку:
Error report:
ORA-04089: cannot create triggers on objects owned by SYS
04089. 00000 - "cannot create triggers on objects owned by SYS"
*Cause: An attempt was made to create a trigger on an object owned by SYS.
*Action: Do not create triggers on objects owned by SYS.
Обе таблицы названы ghazals_current
а также ghazal_current_audit
были созданы SYS
, Почему я не могу создать триггер на таблице, созданной SYS
,
1 ответ
Вы не должны создавать какие-либо объекты в схеме SYS. Этот пользователь является частью системы управления базами данных Oracle, и его использование может привести к поломке вашей базы данных. Из документации:
"Административная учетная запись SYS создается автоматически при создании базы данных. Эта учетная запись может выполнять все административные функции базы данных. Схема SYS хранит базовые таблицы и представления для словаря данных. Эти базовые таблицы и представления критически важны для работы базы данных Oracle.. Таблицы в схеме SYS управляются только базой данных и никогда не должны изменяться каким-либо пользователем ".
О, если вам интересно, то же самое относится и к SYSTEM.
Триггеры особенно подвержены злоупотреблениям и являются основным источником проблем масштабирования. Вот почему Oracle запрещает нам создавать триггеры в SYS, потому что это может повредить или, по крайней мере, повлиять на производительность словаря данных.
Конечно, это не то, что здесь происходит. Вы создали свои собственные таблицы в SYS. Ну брось их. Сейчас. Используйте SYS, чтобы создать своего собственного пользователя, GHAZAL или что-то еще и предоставить ему необходимые привилегии. Затем подключитесь как новый пользователь, чтобы создать свои таблицы и схемы.