无法删除刚刚创建的表

时间:2010-08-01 23:41:37

标签: sql oracle plsql ora-00942

我创建了一个名为dual2的表。我在那里有一行,可以从中选择。尝试删除它时,会产生此错误:

  

第1行的错误:
  ORA-00604:递归SQL级别1发生错误   ORA-00942:表或视图不存在

然而,该表仍然存在!它从dba_tablesuser_tables返回。

关于这里发生了什么的任何想法?

alt text http://img180.imageshack.us/img180/6012/28140463.png

这是表创建的脚本,我使用plsql developer:

-- Create table
create table
(
  DUMMY VARCHAR2(1)
)
tablespace SYSTEM
  pctfree 10
  pctused 40
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );

P.S。:p.cambell感谢您的编辑!抱歉我的英语不好:)

2 个答案:

答案 0 :(得分:9)

规则1永远不会创建任何系统(或SYS)。这些是内置对象的内置模式。

您可能必须以SYSDBA身份连接才能拥有足够的权限来删除系统拥有的任何对象。此外,根据安装情况,可能会有一些触发器在drop table(我认为MDSYS有一个)之前触发,而且可能不适用于SYSTEM对象。

就个人而言,我很想将数据库吹走并重新开始,或者在创建对象之前回到原点。

答案 1 :(得分:-2)

如果您只想删除表的数据,则可以使用truncate。

Truncate TABLE [dbo].[table_name]

它会删除所有行,如果有任何自动增量(或标识)列。然后将种子设置为1。