«Операция манипулирования данными недопустима в этом представлении», происходящая в пользовательской таблице - PullRequest
8 голосов
/ 16 сентября 2011

Эта ошибка возникает, когда я пытаюсь вставить значения в таблицу, принадлежащую пользователю, которого я использую:

SQL Error: ORA-01732: data manipulation operation not legal on this view
*Cause:    
*Action:

Во всех местах люди говорят, что это происходит при попытке вставить / обновить / удалить представление, но это, безусловно, таблица, и у пользователя есть необходимые привилегии.

Итак, есть ли другие причины для этого, помимо попыток выполнить нелегальную операцию с видом?

Ответы [ 7 ]

4 голосов
/ 14 октября 2013

Альтернативный ответ: я сталкивался с этой ошибкой, когда пытался вставить запись в материализованную таблицу представления.

3 голосов
/ 16 сентября 2011

Я бы активировал трассировку SQL и снова попытался вставить, а затем взглянул на файл трассировки, чтобы точно определить, какой оператор SQL вызывает ошибку.

Если, как предлагают другие, это SQL, выполняемыйтриггер для какого-либо другого объекта, вы увидите, что в трассировке используется рекурсивный SQL, и будет ясно, какой объект задействован.

Если в трассировке нет рекурсивного SQL, то, скорее всего, выне обращаясь к объекту, который вы считаете нужным, и трассировка должна показывать фактический используемый идентификатор объекта, который вы можете проверить по словарю данных.

Если это действительно просто таблица, и нет рекурсивного SQLзначит, у вас есть повод для поддержки Oracle.

3 голосов
/ 16 сентября 2011

Первое: вы действительно уверены, что это стол? Исходя из того, как вы сформулировали вопрос, возможно, пользователь, столкнувшийся с этой проблемой, не владеет таблицей. В этом случае, возможно, есть синоним или что-то, что действительно указывает на представление.

Вторым может быть, если на столе есть триггер, и именно действие, которое он вызывает, вызывает проблему.

2 голосов
/ 12 ноября 2015

Я предполагаю, что вы, скорее всего, смотрите на материализованное представление, а не на таблицу . Искать

Select from user_objects

в словаре, чтобы увидеть тип объекта.

1 голос
/ 09 февраля 2016

Я знаю, что это очень старая запись, но, к вашему сведению, «таблица» - это материализованное представление (mview).Mview не настроен на разрешение обновлений, и поэтому вы не можете вставить / обновить / удалить его.

Вы можете получить список всех ваших материализованных представлений, выполнив:

select * from user_mviews
1 голос
/ 16 сентября 2011

еще одна мысль ...

попробуйте это с явным идентификатором в таблице, например так:

insert into myschema.mytable () values ()...

на всякий случай, если есть еще один локально

0 голосов
/ 27 октября 2016

Еще одна причина возникновения этой ошибки - попытка обновить данные с помощью несуществующего столбца:

update house set color = 'blue' where street = 'ABC';

street столбец не существует в таблице house

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...