在Oracle 8i数据库下面,在一个用户名sysappadmjr下面有一个表,表名为jra01,主键为a0100。在用户名jruser下面有一个表,表名为jjb01,有一个信息项为b0102。现在在jjb01中建立一个约束关系,就是将b0102设为外键,并与前面提到的a0100相关联。我使用的SQL语句为
ALTER TALBE "JRUSER"."JJB01" ADD(
CONSTRAINT 约束名 FOREIGN KEY ("B0102")
REFERENCES ON "SYSAPPADRJR"."JRA01"(A0100)
ON DELETE CASCADE)
(注意:sysappadmjr和jruser都已经赋予了DBA的角色)
但是系统回出现如下的错误提示:
ORA-00942:表或视图不存在
您没有足够的权限该操作。要创建、编辑或者删除不属于自己方案的对象,您必须具有DBA的角色 。作为一个具有SELECT_CATALOG_ROLE的用户,您对不属于自己方案只能获得只读视图。我一直不明白这是怎么回事?我曾经试图用sysappadmjr和system的帐号登陆并创建以上的SQL语句但是失败了。如果哪位大虾知道怎么创建这个外键或者不能创建这个外键的原因的话,请赐教!多谢!

解决方案 »

  1.   

    ALTER TALBE "JRUSER"."JJB01" ADD(
    CONSTRAINT 约束名 FOREIGN KEY ("B0102")
    REFERENCES ON "SYSAPPADRJR"."JRA01"."A0100"
     ON DELETE CASCADE);
      

  2.   

    你的SQL语句不对,这里的关键问题是究竟什么样的用户才能对不属于自己的方案创建对象。
      

  3.   

    如果用户A要对用户B的对象有操作权限,那么用户B要对用户A授权才行。
      

  4.   

    在SYSAPPADRJR用户下,执行下面语句
    grant all on JRA01 to JRUSER;