大家下,我在sys下创建了一个student表,现在想在这个表上创建一个触发器,实现的功能是:如果删除student上的id=11的记录,则弹出'不允许删除!'的提示。
代码如下:
create or replace trigger student_delete
after delete on student
for each row
begin
if old.student.id=11 then
raise_application_error(-20000,'不允许删除!');
end if;
end;

解决方案 »

  1.   

    哦,确实是这样的。那就记住吧,不能对sys用户创建的表建触发器。换个用户就行了。
      

  2.   

    我发现用sys身份创建一个管理员帐户,并将student表的delete权限授权给此帐户,但此帐户还是不能在sys的表上建立触发器,楼上的意思是说要在非sys用户上的表才能建是吧?
      

  3.   

    没有啊 是权限问题
    grant database administrator trigger to  xx;
      

  4.   

    开始创建zhenjiang用户的时候,我是授予了connect,resourse,dba的权限,现在按照版主的说法
    grant database administrator trigger to zhenjiang
    提示以下错误信息:
    SQL> conn sys
    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 
    Connected as SYSSQL> grant database administrator trigger to zhenjiang;grant database administrator trigger to zhenjiangORA-00990: 权限缺失或无效
      

  5.   


    不好意思哈 哦搞错了  ADMINISTER DATABASE TRIGGER
      

  6.   

    SQL> grant administer database trigger to zhenjiang;Grant succeeded
    授权成功后,zhenjiang用户还是不能在sys用户的表上建立触发器,我就在zhenjiang下建立一个表并在上面再建立触发器,可都是返回以下错误
    ORA-04089: 无法对 SYS 拥有的对象创建触发器
      

  7.   

    我用zhenjiang用户以普通身份进去建立表再建立触发器ok,现在又有个问题是zhenjiang用户以管理员身份登陆创建的表,当切换成普通用户登陆时却访问不了这个表,请问怎么会这样子的呢?
      

  8.   

    什么是zhenjiang用户以管理员身份登陆?
      

  9.   

    就是我以sys身份创建的一个管理员帐户,并授予了CONNECT,RECOURSE权限