Команда Oracle Alter для переименования существующего столбца с ошибками - PullRequest
0 голосов
/ 10 мая 2018
alter table tablename rename column zl_divn_nbr to div_loc_nbr;

Ошибка при выполнении вышеуказанного оператора. Пожалуйста, помогите.

SQL Error: ORA-54032: column to be renamed is used in a virtual column expression
54032. 0000 -  "column to be renamed is used in a virtual column expression"
*Cause:    Attempted to rename a column that was used in a virtual column
           expression.
*Action:   Drop the virtual column first or change the virtual column
           expression to eliminate dependency on the column to be renamed

Ответы [ 3 ]

0 голосов
/ 11 мая 2018

ALTER TABLE переименовать столбец в

В случае таблиц с виртуальными или «столбцами расширения группы» выше инструкция возвращает ошибку до Oracle 12cR2. Для Oracle 12cR2 или более новых версий вышеприведенный оператор выполняется нормально, поскольку команда «переименование столбца» не связана с расширением группы.

0 голосов
/ 11 мая 2018

Запустите следующий запрос SQL в вашей базе данных, используя имя таблицы, указанное в сообщении об ошибке.Например, в сообщении об ошибке, показанном в этой статье, имя таблицы - «имя таблицы».Обратите внимание, что хотя имя таблицы в сообщении об ошибке отображается в нижнем регистре, оно может быть в верхнем регистре в вашей БД.Этот запрос чувствителен к регистру, поэтому, если вы не получаете результатов, проверьте, является ли имя таблицы прописными буквами внутри вашей базы данных.

SELECT COLUMN_NAME, DATA_DEFAULT, HIDDEN_COLUMN FROM USER_TAB_COLS WHERE TABLE_NAME = 'tablename';

Прежде чем продолжить, убедитесь, что процесс Bitbucket Server не запущен.Если расширенная статистика включена, обратитесь к администратору базы данных, чтобы он удалил метаданные расширенной статистики из таблицы, и продолжите обновление.Если вы хотите снова включить расширенную статистику после обновления, вы можете сделать это, однако учтите, что вам может потребоваться повторить этот процесс для последующих обновлений, в противном случае вы рискуете снова столкнуться с этой проблемой.

Удаление столбцов, созданныхРасширенная статистика требует использования встроенной хранимой процедуры,

DBMS_STATS.DROP_EXTENDED_STATS ().

Использование этой хранимой процедуры более подробно описано в ORA-54033 и в Hidden.Virtual Column Mystery, и выглядит примерно так:

EXEC DBMS_STATS.DROP_EXTENDED_STATS(ownname=>'<YOUR_DB_USERNAME>', tabname=>'tablename', extension=>'("PR_ROLE", "USER_ID", "PR_APPROVED")')

Ссылки Ошибка обновления базы данных: переименовываемый столбец

Спасибо.

0 голосов
/ 10 мая 2018

Возможно, у вас есть такая таблица:

CREATE TABLE tablename(
  id               NUMBER,
  zl_divn_nbr      NUMBER,
  zl_divn_percent  NUMBER GENERATED ALWAYS AS (ROUND(zl_divn_nbr/100,2)) VIRTUAL
);

, где zl_divn_nbr столбец используется для вычисления виртуального (zl_divn_percent) столбца.

Чтобы переименовать zl_divn_nbr, все виртуальные столбцы, на которые есть ссылки в этом столбце, должны быть удалены и могут быть созданы позже.

Синтаксис для определения виртуального столбца такой:

column_name [datatype] [GENERATED ALWAYS] AS (expression) [VIRTUAL]

Начиная с версии 11 R1, у нас есть это свойство.

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