我在表中设立一个外键
create table menu_order(
menu_o_seat number(10),
menu_o_name varchar2(20),
menu_o_num number(10),
menu_o_date date,
foreign key(menu_o_name) references menu_hotel(menu_h_name))   !!!!!!!!!!当时为了方便,这个外键就没用 constraint 现在想要把这个外键删除  
alter table menu_order drop foreign key(menu_o_name)
但却删除不了请问该怎么办啊

解决方案 »

  1.   

    --查询约束名称
    SELECT t.constraint_name
      FROM user_constraints t
     WHERE t.table_name = 'MENU_ORDER';--删除上面查询到的约束
    ALTER TABLE menu_order drop CONSTRAINT SYS_C005452;
      

  2.   


    未选定行是你在查询的时候提示  还是在你删除的时候?
    如果是在查询的时候,说明这个表并没有相关的键约束ALTER TABLE menu_order drop CONSTRAINT SYS_C005452;
    这句要根据你查询出来的 为
    SELECT t.constraint_name
    FROM user_constraints t
    WHERE t.table_name = 'MENU_ORDER' and t.constraint_type='R';
    的名称来改变的
      

  3.   

    --删除表中已有的主键约束(无命名)
       SELECT * 
        FROM USER_CONS_COLUMNS 
       WHERE TALBE_NAME='accounts';--找出主键名,然后删除即可
       ALTER TABLE ACCOUNTS DROP CONSTRAINT SYS_C003063;
      

  4.   

    表名是区分大小写的,你检查一下WHERE t.table_name = 'MENU_ORDER';
      

  5.   


    create table student (
           id number,
           name varchar2(20),
           constraint pk_ta primary key (id))
    /
    create table achievement(
           id number
           constraint fk_rf_stu references student(id),
           course_name varchar2(20),
           grade number)
    /
    SQL> select constraint_name
      2  from user_constraints
      3  where table_name='STUDENT';
     
    CONSTRAINT_NAME
    ------------------------------
    PK_TA
     
    SQL> select constraint_name,column_name
      2  from user_cons_columns
      3  where table_name='STUDENT'
      4  /
     
    CONSTRAINT_NAME                COLUMN_NAME
    ------------------------------ --------------------------------------------------------------------------------
    PK_TA                          ID
     
    SQL> select constraint_name,column_name
      2  from user_cons_columns
      3  where table_name='ACHIEVEMENT'
      4  /
     
    CONSTRAINT_NAME                COLUMN_NAME
    ------------------------------ --------------------------------------------------------------------------------
    FK_RF_STU                      ID
     
    SQL> alter table achievement drop constraint fk_rf_stu;
     
    Table altered
     
    SQL> select constraint_name,column_name
      2  from user_cons_columns
      3  where table_name='ACHIEVEMENT'
      4  /
     
    CONSTRAINT_NAME                COLUMN_NAME
    ------------------------------ --------------------------------------------------------------------------------
     
    SQL> 
      

  6.   


    oracle alter table 命令简介
      

  7.   


    用plsqldev 工具 ,查看表结构看看吧。  确认一下是否真的有外键。