1

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

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

但是,该表仍然存在!它从dba_tables和返回user_tables

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

替代文字 http://img180.imageshack.us/img180/6012/28140463.png

这是我从 plsql 开发人员那里获得的表创建脚本:

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

PS:p.cambell 感谢编辑!对不起我的英语不好:)

4

2 回答 2

9

永远不要将任何东西创建为系统(或 SYS)中的规则 1。这些是内置对象的内置模式。

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

就个人而言,我很想将数据库炸毁并重新开始,或者从创建对象之前返回。

于 2010-08-02T00:15:18.160 回答
-2

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

截断表 [dbo].[table_name]

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

于 2010-08-02T07:07:55.443 回答