解决ORA-O4O89:无法对sys拥有的对象创建触发器

2014-11-24 18:22:41 · 作者: · 浏览: 0

使用的用户登录是自己创建的新用户XXX下登录,之后再XXX用户下创建一个名为MECITY的表空间,接着在XXX用户下的MECITY表空间下创建名为CITYS的表。


然后,想给CITY表建立一个触发器,使每次插入数据时表的ID列会自动增加1。


创建触发器语句:


CREATE TRIGGER TRI_CITY_ID


BEFORE INSERT ON CITYS


FOR EACH ROW


BEGIN


SELECT CITY_ID.NEXTVAL INTO :NEW.ID FROM CITYS;


END;


错误提示:ORA-O4O89:无法对sys拥有的对象创建触发器。


首先在tables里面找到该表,右键查看该表的properties,里面有owner。出现上面这种情况一定是owner为sys。


下面提供一种解决方法:


为当前登录用户创建名称为该表名称相同的表,数据从sys的表里面拷贝。如:


CREATE TABLE XXX.CITYS AS SELECT * FROM SYS.CITYS;


然后删除掉sys底下的表。


DROP TABLE SYS.CITYS;


再执行创建触发器语句。