SQL> CREATE OR REPLACE TRIGGER mvnforumCategory_trig_autoinc
  2  BEFORE INSERT ON mvnforumCategory
  3  FOR EACH ROW
  4  BEGIN
  5  IF (:new.CategoryID IS NULL) THEN
  6  SELECT mvnforumCategory_seq.nextval INTO :new.CategoryID FROM DUAL;
  7  END IF;
  8  END;
  9  /CREATE OR REPLACE TRIGGER mvnforumCategory_trig_autoinc
BEFORE INSERT ON mvnforumCategory
FOR EACH ROW
BEGIN
IF (:new.CategoryID IS NULL) THEN
SELECT mvnforumCategory_seq.nextval INTO :new.CategoryID FROM DUAL;
END IF;
END;ORA-04089: 无法对 SYS 所有的对象创建触发器我是以sys身份建立并登陆数据库的,也就是刚装完oracle时系统要求建立的那个数据库
为什么会出现这样的错误提示,求解。是不是 需要我建立一些其他的对象来创建这个存储过程?如果是 我应该怎么去建立这个对象?

解决方案 »

  1.   

    SELECT mvnforumCategory_seq.nextval INTO :new.CategoryID FROM DUAL; 
    是不是这句话的问题?trigger里似乎不允许改变列值的,
    我公司的环境是ORACLE 7,不知道后续版本是怎么规定的。
      

  2.   

    搞明白了。。开始出错是因为我用的sysdba
    需要建立一个普通用户才能在其上进行一些和表相关的操作。
    同时要给该用户分配表空间。
    呵呵 就当给新手提醒吧。