约束很麻烦,我刚在做联系,在employees表中插入一条数据但它跳出来说违反主键约束,其中的employee_id已经有了,然后我在前面加了个1,运行后,它又说违反外键约束,想这种情况,我该怎么办?

解决方案 »

  1.   

    是依赖父表的外键吧?在employees表中插入数据的主键是其父表的外键
      

  2.   


    这要看employees表结构的定义。重新看了一下问题,应该是employee_id可能依赖于其它表,那它只能是employees表的外键。这个确实比较奇怪。
    最好楼主能帖出该表的定义。
    没有父表的外键一说。
      

  3.   

    你的employee表的employee_id字段不但要是唯一的,而且要在你的是依赖于别的别的主键。你可以这样查看下主表  select * from user_constraints r where r.table_name=upper('receivables') and r.constraint_type='F'
      

  4.   


    看一下你employees表的employee_id在那个表中以外键形式存在~
      

  5.   

    来了,具体点讲
    insert into employees
    values(114,'ben','raphealy','drapheal','515.127.4561',
    to_date('1月 3,1999','mon dd,rr'),
    'ac_account',11000,null,100,30)
    /
    违反唯一约束条件<HR.EMP_EMP_ID_PK>
    将114改为1114(因为是练习,改下无所谓)
    insert into employees
    values(1114,'ben','raphealy','drapheal','515.127.4561',
    to_date('1月 3,1999','mon dd,rr'),
    'ac_account',11000,null,100,30)
    /
    违反完整性约束条件<HR.EMP_JOB_FK>-未找到父项关键字
    情况就是这样,我没法练了。
      

  6.   

    select * from user_constraints r where r.table_name=upper('employees');
    用这个语句查询下,把结果贴出来看下。。
      

  7.   


    猜测你的employees插入的记录的职位字段在你的职位表了找不到对应的职位。
    把employees的职位字段的值从职位表的去找个,就可以了。。
      

  8.   

    你连表里有什么字段信息都不了解,约束当然麻烦了,如果你不想了解的话,重新创建自己的表啊,
    用CRATE TABLE ... AS  SELECT * FROM EMP....很快的啊,这样就不要管表里的约束啊,索引什么的了
      

  9.   

    目标表employees的job字段是有外键的,所以你无法插入。
    有两种方法解决:
    1。修改你insert的job列的值,使其符合外键约束
    2。修改表employees的表结构,去除外键,或者是自己新建张表
      

  10.   

     all_constraints user_constraints dba_constraints
    从上面的表里面可以找见约束。例如:
     1  SELECT constraint_name,constraint_type FROM user_constraints
     2* WHERE table_name = 'AAAA' and owner = 'HR'
     
      

  11.   

    发帖注意事项
    http://topic.csdn.net/u/20091130/21/fb718680-98ff-4afb-98d8-cff2f8293ed5.html?24281