Oracle 有没有办法创建SYS拥有的触发器,或者有什么解决方案

Oracle 有没有办法创建SYS拥有的触发器,或者有什么解决方案,oracle,plsql,oracle11g,triggers,Oracle,Plsql,Oracle11g,Triggers,我有一个问题要创建触发器我正在附上我的cmd贝娄的照片 这是我的密码 CREATE OR REPLACE TRIGGER display_salary_changes BEFORE DELETE OR INSERT OR UPDATE ON customers FOR EACH ROW WHEN (NEW.ID > 0) DECLARE sal_diff number; BEGIN sal_diff := :NEW.salary - :OLD.salary; d

我有一个问题要创建触发器我正在附上我的cmd贝娄的照片

这是我的密码

CREATE OR REPLACE TRIGGER display_salary_changes
BEFORE DELETE OR INSERT OR UPDATE ON customers 
FOR EACH ROW
WHEN (NEW.ID > 0)
DECLARE
    sal_diff number;
BEGIN
    sal_diff := :NEW.salary - :OLD.salary;
    dbms_output.put_line('Old salary ' || :OLD.salary);
    dbms_output.put_line('New salary ' || :NEW.salary);
    dbms_output.put_line('Salary difference ' || :sal_diff);
END;
/
错误

ORA-04089:无法在SYS拥有的对象上创建触发器


可能的解决方案是什么,或者我现在将做什么请给我一些建议

我认为您的客户表是由SYS user创建的

使用诸如“MY_user”之类的系统创建一个用户并与其连接,然后使用MY_user创建您的客户表。并尝试创建您的触发器。放下
sys.customer

此帐户可以执行所有管理功能。所有基地 (基础)数据库数据字典的表和视图是 存储在SYS架构中。这些基表和视图对于 Oracle数据库的操作。以维持 在数据字典中,SYS模式中的表仅由 数据库任何用户或数据库都不应修改它们 管理员不能在SYS架构中创建任何表


根据:

错误消息肯定是不言自明的吗?谢谢你的帮助,它对我起了作用