这个外健怎么加不了? 
SQL> desc docman.role;
名称 空? 类型
----------------- -------- ------------
NO NOT NULL VARCHAR2(10)
NAME VARCHAR2(10)
DESCRIBE VARCHAR2(100
)SQL> desc docman.rolemenu;
名称 空? 类型
----------------- -------- ------------
ROLENO NOT NULL VARCHAR2(10)
MENUNO NOT NULL NUMBER
SQL> alter table docman.rolemenu add(constraint fk_rolemenu1 foreign key (roleno) references docman.role(no))
*
ERROR 位于第 1 行:
ORA-02298: 无法验证 (DOCMAN.FK_ROLEMENU1) - 未找到父项关键字
注:docman.role已经有关键字(如下):
1: select * from all_constraints where table_name='ROLE'OWNER CONSTRAINT_NAME C TABLE_NAME SEARCH_CONDITION R_OWNER R_CONSTRAINT_NAME DELETE_RU STATUS DEFERRABLE DEFERRED VALIDATED GENERATED BAD RELY LAST_CHANG
------------------------------ ------------------------------ - ------------------------------ -------------------------------------------------------------------------------- ------------------------------ ------------------------------ --------- -------- -------------- --------- ------------- -------------- --- ---- ----------
DOCMAN PK_ROLE P ROLE ENABLED NOT DEFERRABLE IMMEDIATE VALIDATED USER NAME 05-12月-02

解决方案 »

  1.   

    会不会是docman.rolemenu中至少有一条记录的的roleno列值在docman.role的no列中找不到?
      

  2.   

    ORA-02298这个错误代码就是说明在子表中有部分纪录在主表中找不到reference纪录,解决方案是首先找到这些破坏数据完整性的纪录:
    select x.* from rolemenu x, role y
     where x.roleno = y.no (+)
       and y.no is null;然后你决定或者删除子表中这些纪录,或者在主表中添加相关no的纪录最后提醒一点,role是oracle sql关键字,不要用来做表名