2010-08-01 4 views
1

J'ai créé une table nommée dual2. J'ai une rangée là, et peux choisir de lui. Lorsque vous essayez de le supprimer, il génère cette erreur:Impossible de supprimer la table qui vient d'être créée

ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-00942: table or view does not exist

Cependant, la table existe toujours! Il revient de dba_tables et user_tables.

Des idées sur ce qui se passe ici ??

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

Voici le script de création de la table, que je suis avec le développeur 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 
); 

P.S .: p.cambell merci pour le montage! et désolé pour mon mauvais anglais :)

+1

Êtes-vous sûr de référencer le bon schéma? –

+0

Oui, drop table system.dual2 fait la même chose. Et je me suis connecté en tant que système. Et le propriétaire de la table est le système. – stee1rat

+0

C'est pourquoi je ne pense pas que la table soit dans SYSTEM. Je n'arrive pas à me souvenir comment obtenir le script de table de PLSQL Developer - cela permettrait de le résoudre très rapidement. Faites un clic droit sur la table et sélectionnez les propriétés? –

Répondre

9

Règle 1 en JAMAIS créer quelque chose comme système (ou SYS). Ce sont des schémas intégrés pour les objets intégrés.

Vous devrez probablement vous connecter en tant que SYSDBA pour disposer de privilèges suffisants pour supprimer les objets appartenant au système. En outre, en fonction de l'installation, il peut y avoir des déclencheurs qui se déclenchent avant une table de dépôt (je pense que MDSYS en a un) et qui pourraient ne pas fonctionner pour un objet SYSTEM. Personnellement, je serais tenté de faire sauter la base de données et de recommencer, ou de revenir à l'arrière avant la création de l'objet.

+0

+1: Ah, ça explique les choses ... –

+0

Je connais la Règle n ° 1, mais le problème que d'autres utilisateurs ont aussi ce problème, c'est pourquoi j'ai décidé de le faire en tant que système ou système. Pour sys comme sysdba, il est dit «privilèges insuffisants». Bien sûr, je peux supprimer ce db, mais je veux juste savoir - quel est le problème. – stee1rat

+0

Oh, et il est dit «privilèges insuffisants» pour abandonner les tables de l'autre utilisateur comme sysdba aussi, BTW. – stee1rat

-2

si vous souhaitez supprimer uniquement les données de la table, vous pouvez utiliser truncate.

 
Truncate TABLE [dbo].[table_name] 

Il supprimera toutes les lignes et S'il y a une colonne autoincréation (ou identité). alors seed est mis à 1.

+0

-1; une réponse SQL Server pour un problème Oracle. Oracle n'a ni colonnes d'auto-incrémentation ni d'identité. –

Questions connexes