Не удалось удалить только что созданную таблицу - PullRequest
1 голос
/ 02 августа 2010

Я создал таблицу с именем 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
  );

P.S .: p.cambell спасибо за редактирование! и извините за мой плохой английский:)

Ответы [ 2 ]

9 голосов
/ 02 августа 2010

Правило 1 НИКОГДА не создавайте ничего как систему (или SYS).Это встроенные схемы для встроенных объектов.

Возможно, вам придется подключиться как SYSDBA, чтобы иметь достаточные привилегии для удаления любых объектов, принадлежащих системе.Кроме того, в зависимости от установки могут быть триггеры, которые срабатывают перед удаленной таблицей (я думаю, у MDSYS есть такая) и которые могут не работать для объекта SYSTEM.

Лично у меня возникнет искушениеотсоедините базу данных и начните снова, или вернитесь назад, прежде чем вы создали объект.

0 голосов
/ 02 августа 2010

если вы хотите удалить только данные таблицы, вы можете использовать усечение.

Truncate TABLE [dbo].[table_name]

Это удалит все строки и если есть какой-либо столбец автоинкремента (или идентификатора).тогда зерно установлено на 1.

...