DROP表时出现ORA-00604错误

    今天无意间想DROP一个测试表时出现了ORA-00604错误,起初以为数据库或系统的问题,于是重启电脑和数据库。作如下测试:

    SQL> conn scott/tiger
    已连接。
    SQL> create table t002(
    2  id  number,
    3  name varchar2(40));

    表已创建。

    SQL> drop table t002;
    drop table t002
    *
    第 1 行出现错误:
    ORA-00604: 递归 SQL 级别 1 出现错误
    ORA-01422: 实际返回的行数超出请求的行数

 

发现问题依然存在,于是在技术群里向高手请教,某位高人建议我查看下DUAL表并删除多余数据

    SQL> conn / as sysdba
    已连接。

    SQL> select * from dual;

    D
    -
    X

    SQL> delete from dual ;

    已删除 1 行。

    SQL> select * from dual;

    D
    -
    Y

    SQL> delete from dual ;

    已删除 1 行。

    SQL> select * from dual;

    未选定行

    SQL> insert into dual values('X');

    已创建 1 行。

    SQL> commit;

 

通过以上过程可以发现原来DUAL表中有两条记录(之前测试DUAL表功能时增加的),删除一条后,DROP正常,可见DUAL表对数据库非常重要!

你可能感兴趣的:(sql)