我遇到了创建触发器的问题我正在附上我的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拥有的对象上创建触发器
这可能是什么解决方案或我现在要做什么请给我一些建议
答案 0 :(得分:1)
我认为您的客户表是由SYS用户创建的。
使用类似' MY_USER'的sys创建用户连接它然后使用MY_USER创建您的客户表。并尝试创建您的触发器。删除sys.customer
表。
此帐户可以执行所有管理功能。所有基地 (基础)数据库数据字典的表和视图 存储在SYS模式中。这些基表和视图是至关重要的 Oracle数据库的操作。保持完整性 在数据字典中,SYS模式中的表只能由 数据库。任何用户或数据库都不应修改它们 管理员。您不能在SYS模式中创建任何表。
根据:https://docs.oracle.com/database/121/ADMQS/GUID-CF1CD853-AF15-41EC-BC80-61918C73FDB5.htm#ADMQS12003