我使用
alter table fkt
add foreign key(fkey) references pkt
为fkt表添加了参照pkt主键的外键。现在我想把这个外键用sql删除,但是由于添加时没有给外键约束起名,如何删除呢?

解决方案 »

  1.   


    你添加约束时候就算没有指定约束名,Oracle在创建的时候就会自己创建一个约束名,你先找到这个约束名,再删除。
    可以在developer点击fkt表,查看load表结构 看下就知道了
    或者查看user_constraints、user_cons_columns视图select a.owner, --主键拥有者   
           a.table_name, --主键表   
           b.column_name, --主键列   
           c.OWNER, --外键拥有者   
           c.table_name, --外键表   
           d.column_name --外键列   
    from user_constraints  a   
    left join user_cons_columns b    
                on  a.constraint_name=b.constraint_name   
    left join user_constraints c    
                on c.R_CONSTRAINT_NAME=a.constraint_name   
    left join user_cons_columns d   
                on c.constraint_name=d.constraint_name   
    where  a.constraint_type='F'  
        and  a.table_name='xxx' --需要查看主外键关系的表   
    order by a.table_name  
      

  2.   

    --查出外键名称
    SELECT t.constraint_name
      FROM user_constraints t
     WHERE t.table_name = 'FKT' AND
           t.constraint_type = 'R';
    --删除外键
    ALTER TABLE EMP2 drop CONSTRAINT <上一步查出的约束名称>;
      

  3.   

    如果使用pl/sql developer工具,在左边的对象浏览窗口,找到foreign keys,展开,右键删除即可。
      

  4.   

    使用SQL语句,在不提供约束名的情况下是否可以删除呢?比如unique约束就可以,外键不行吗?
      

  5.   

    1楼、2楼的不就是用sql语句删除外键吗?