我创建了一个名为dual2
的表。我在那里有一行,可以从中选择。尝试删除它时,会产生此错误:
第1行的错误:
ORA-00604:递归SQL级别1发生错误 ORA-00942:表或视图不存在
然而,该表仍然存在!它从dba_tables
和user_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感谢您的编辑!抱歉我的英语不好:)
答案 0 :(得分:9)
规则1永远不会创建任何系统(或SYS)。这些是内置对象的内置模式。
您可能必须以SYSDBA身份连接才能拥有足够的权限来删除系统拥有的任何对象。此外,根据安装情况,可能会有一些触发器在drop table(我认为MDSYS有一个)之前触发,而且可能不适用于SYSTEM对象。
就个人而言,我很想将数据库吹走并重新开始,或者在创建对象之前回到原点。
答案 1 :(得分:-2)
如果您只想删除表的数据,则可以使用truncate。
Truncate TABLE [dbo].[table_name]
它会删除所有行,如果有任何自动增量(或标识)列。然后将种子设置为1。