CREATE TABLE SC
         (Sno    CHAR(9)  NOT NULL, 
          Cno    CHAR(4)  NOT NULL,  
          Grade    SMALLINT,
          PRIMARY KEY (Sno,Cno),
          FOREIGN KEY (Sno) REFERENCES Student(Sno),//要修改的内容
          FOREIGN KEY (Cno) REFERENCES Course(Cno)
      );将上述要修改的完整性约束语句改为:FOREIGN KEY (Sno) REFERENCES Student(Sno)  ON DELETE CASCADE,当我输入:
SQL> alter table sc drop foreign key;出现了:
alter table sc drop foreign key
                    *
第 1 行出现错误:
ORA-00905: 缺失关键字不太明白错误原因,
请教高手!!!!!!!

解决方案 »

  1.   

    FOREIGN KEY也是一种约束吧
    你先此用户下查出约束名
    SELECT constraint_name FROM user_constraints uc WHERE uc.table_name='SC' AND uc.constraint_type='R';

    ALTER TABLE sc DROP CONSTRAINT constraint_name
      

  2.   


    DECLARE
      sql_text VARCHAR2(100);
      TYPE constraint_table_type IS TABLE OF user_constraints.constraint_name%TYPE INDEX BY BINARY_INTEGER;
      constraint_table constraint_table_type;
    BEGIN
      SELECT constraint_name BULK COLLECT
        INTO constraint_table
        FROM user_constraints uc
       WHERE uc.table_name = 'SC'
         AND uc.constraint_type = 'R';
      FOR i IN constraint_table.FIRST .. constraint_table.LAST LOOP
        sql_text := 'ALTER TABLE sc DROP CONSTRAINT ' || constraint_table(i);
        EXECUTE IMMEDIATE sql_text;
      END LOOP;
    END;
      

  3.   

    alter table添加和删除外键的例子
    alter table tablename add constraint fk_name foreign key(bin_code) references part_in;  注意foreign key也是约束哟。alter table tablename drop constrain fk_name;  所以这里当constraint处理。